From 94010d75dd0c9252b3e51232a022321edd0d2d6d Mon Sep 17 00:00:00 2001 From: Wes Smith Date: Tue, 7 Feb 2023 17:39:05 -0500 Subject: [PATCH] Bump to 1.5.1 --- ButtonMerchant.podspec | 2 +- docs/history/1.5.1/Classes.html | 181 ++ .../history/1.5.1/Classes/ButtonMerchant.html | 355 ++++ docs/history/1.5.1/Classes/ButtonProduct.html | 279 +++ docs/history/1.5.1/Classes/Order.html | 239 +++ .../history/1.5.1/Classes/Order/Customer.html | 181 ++ .../history/1.5.1/Classes/Order/LineItem.html | 251 +++ docs/history/1.5.1/Enums.html | 198 ++ .../1.5.1/Enums/ButtonMerchantError.html | 159 ++ .../1.5.1/Enums/ConfigurationError.html | 171 ++ docs/history/1.5.1/Enums/NetworkError.html | 142 ++ docs/history/1.5.1/Protocols.html | 177 ++ docs/history/1.5.1/Protocols/Activity.html | 186 ++ .../Protocols/ButtonProductCompatible.html | 288 +++ .../history/1.5.1/Protocols/Configurable.html | 138 ++ docs/history/1.5.1/Structs.html | 141 ++ docs/history/1.5.1/badge.svg | 28 + docs/history/1.5.1/css/highlight.css | 202 ++ docs/history/1.5.1/css/jazzy.css | 439 +++++ .../ButtonMerchant.docset/Contents/Info.plist | 20 + .../Contents/Resources/Documents/Classes.html | 181 ++ .../Documents/Classes/ButtonMerchant.html | 355 ++++ .../Documents/Classes/ButtonProduct.html | 279 +++ .../Resources/Documents/Classes/Order.html | 239 +++ .../Documents/Classes/Order/Customer.html | 181 ++ .../Documents/Classes/Order/LineItem.html | 251 +++ .../Contents/Resources/Documents/Enums.html | 198 ++ .../Documents/Enums/ButtonMerchantError.html | 159 ++ .../Documents/Enums/ConfigurationError.html | 171 ++ .../Documents/Enums/NetworkError.html | 142 ++ .../Resources/Documents/Protocols.html | 177 ++ .../Documents/Protocols/Activity.html | 186 ++ .../Protocols/ButtonProductCompatible.html | 288 +++ .../Documents/Protocols/Configurable.html | 138 ++ .../Contents/Resources/Documents/Structs.html | 141 ++ .../Resources/Documents/css/highlight.css | 202 ++ .../Resources/Documents/css/jazzy.css | 439 +++++ .../Resources/Documents/img/carat.png | Bin 0 -> 274 bytes .../Contents/Resources/Documents/img/dash.png | Bin 0 -> 1338 bytes .../Resources/Documents/img/spinner.gif | Bin 0 -> 1849 bytes .../Contents/Resources/Documents/index.html | 156 ++ .../Contents/Resources/Documents/js/jazzy.js | 74 + .../Resources/Documents/js/jazzy.search.js | 74 + .../Resources/Documents/js/jquery.min.js | 2 + .../Resources/Documents/js/lunr.min.js | 6 + .../Documents/js/typeahead.jquery.js | 1694 +++++++++++++++++ .../Contents/Resources/Documents/search.json | 1 + .../Contents/Resources/docSet.dsidx | Bin 0 -> 28672 bytes docs/history/1.5.1/docsets/ButtonMerchant.tgz | Bin 0 -> 76899 bytes docs/history/1.5.1/img/carat.png | Bin 0 -> 274 bytes docs/history/1.5.1/img/dash.png | Bin 0 -> 1338 bytes docs/history/1.5.1/img/spinner.gif | Bin 0 -> 1849 bytes docs/history/1.5.1/index.html | 156 ++ docs/history/1.5.1/js/jazzy.js | 74 + docs/history/1.5.1/js/jazzy.search.js | 74 + docs/history/1.5.1/js/jquery.min.js | 2 + docs/history/1.5.1/js/lunr.min.js | 6 + docs/history/1.5.1/js/typeahead.jquery.js | 1694 +++++++++++++++++ docs/history/1.5.1/search.json | 1 + docs/history/1.5.1/undocumented.json | 6 + docs/latest | 2 +- 61 files changed, 11524 insertions(+), 2 deletions(-) create mode 100644 docs/history/1.5.1/Classes.html create mode 100644 docs/history/1.5.1/Classes/ButtonMerchant.html create mode 100644 docs/history/1.5.1/Classes/ButtonProduct.html create mode 100644 docs/history/1.5.1/Classes/Order.html create mode 100644 docs/history/1.5.1/Classes/Order/Customer.html create mode 100644 docs/history/1.5.1/Classes/Order/LineItem.html create mode 100644 docs/history/1.5.1/Enums.html create mode 100644 docs/history/1.5.1/Enums/ButtonMerchantError.html create mode 100644 docs/history/1.5.1/Enums/ConfigurationError.html create mode 100644 docs/history/1.5.1/Enums/NetworkError.html create mode 100644 docs/history/1.5.1/Protocols.html create mode 100644 docs/history/1.5.1/Protocols/Activity.html create mode 100644 docs/history/1.5.1/Protocols/ButtonProductCompatible.html create mode 100644 docs/history/1.5.1/Protocols/Configurable.html create mode 100644 docs/history/1.5.1/Structs.html create mode 100644 docs/history/1.5.1/badge.svg create mode 100644 docs/history/1.5.1/css/highlight.css create mode 100644 docs/history/1.5.1/css/jazzy.css create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Info.plist create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css create mode 100755 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png create mode 100755 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/spinner.gif create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html create mode 100755 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/lunr.min.js create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx create mode 100644 docs/history/1.5.1/docsets/ButtonMerchant.tgz create mode 100755 docs/history/1.5.1/img/carat.png create mode 100755 docs/history/1.5.1/img/dash.png create mode 100644 docs/history/1.5.1/img/spinner.gif create mode 100644 docs/history/1.5.1/index.html create mode 100755 docs/history/1.5.1/js/jazzy.js create mode 100644 docs/history/1.5.1/js/jazzy.search.js create mode 100644 docs/history/1.5.1/js/jquery.min.js create mode 100644 docs/history/1.5.1/js/lunr.min.js create mode 100644 docs/history/1.5.1/js/typeahead.jquery.js create mode 100644 docs/history/1.5.1/search.json create mode 100644 docs/history/1.5.1/undocumented.json diff --git a/ButtonMerchant.podspec b/ButtonMerchant.podspec index 2a87fe2..36abbf1 100644 --- a/ButtonMerchant.podspec +++ b/ButtonMerchant.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'ButtonMerchant' - s.version = '1.5.0' + s.version = '1.5.1' s.summary = 'An open source client library for Button merchants.' s.description = <<-DESC The Button Merchant library is a light-weight, open-source method diff --git a/docs/history/1.5.1/Classes.html b/docs/history/1.5.1/Classes.html new file mode 100644 index 0000000..b0ccec7 --- /dev/null +++ b/docs/history/1.5.1/Classes.html @@ -0,0 +1,181 @@ + + + + Classes Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchant + +
    +
    +
    +
    +
    +
    +

    ButtonMerchant is the main entry point to the library.

    + +

    To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + ButtonProduct + +
    +
    +
    +
    +
    +
    +

    A concrete implementation of the ButtonProductCompatible protocol.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + Order + +
    +
    +
    +
    +
    +
    +

    Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Classes/ButtonMerchant.html b/docs/history/1.5.1/Classes/ButtonMerchant.html new file mode 100644 index 0000000..f58dc3c --- /dev/null +++ b/docs/history/1.5.1/Classes/ButtonMerchant.html @@ -0,0 +1,355 @@ + + + + ButtonMerchant Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchant

+

ButtonMerchant is the main entry point to the library.

+ +

To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

+ +
+
+
+
    +
  • +
    + + + + attributionToken + +
    +
    +
    +
    +
    +
    +

    The last tracked attributionToken from an inbound Button attributed URL.

    +
    +

    Attention

    + > For attribution to work correctly, you must: + +
      +
    • Always access this token directly—never cache it.
    • +
    • Never manage the lifecycle of this token—Button manages the token validity window server-side.
    • +
    • Always include this value when reporting orders to your order API
    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Configures ButtonMerchant with your application Id.

    +
    +

    Note

    +

    Note:

    + +
    +

    Get your application Id from from the Button Dashboard

    +
    + +
    + +
    +
    +
    +
  • +
  • +
    + + + + trackIncomingURL(_:) + +
    +
    +
    +
    +
    +
    +

    Checks the passed URL for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    To correctly attribute customers, you must call this method with every +incoming url and userActivity from the following UIApplicationDelegate methods:

    +
    + +
      +
    • application(_:open:options:)

    • +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    To correctly attribute customers, you must call this method with every +incoming userActivity from the following UIApplicationDelegate method:

    +
    + +
      +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks to see if the user visited a url prior to installing your app.

    + +

    If a url is found, your completion handler will be called with the url and you are responsible +for navigating the user to the relevant content in your app. If a url is not found or an error occurs, your +completion handler will be called without a url and you can continue with your normal launch sequence.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    This method checks for a post-install url exactly one time after a user has installed your app. +Subsequent calls will result in your completion handler being called without a url. You do not need to wait +for the completion handler before continuing with your normal launch sequence but you should be prepared +to handle a post-install url if one is found. All subsequent incoming urls will be routed to your +UIApplicationDelegate as usual.

    +
    + +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Reports an order to Button.

    + +

    See also: Reporting Orders to Button +(docs)

    + +
    +
    +
    +
  • +
  • +
    + + + + clearAllData() + +
    +
    +
    +
    +
    +
    +

    Discards the current session and all persisted data.

    + +
    +
    +
    +
  • +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + +
    +
    +
    +
  • +
  • +
    + + + + activity + +
    +
    +
    +
    +
    +
    +

    An interface through which user activity can be reported.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Classes/ButtonProduct.html b/docs/history/1.5.1/Classes/ButtonProduct.html new file mode 100644 index 0000000..0c42194 --- /dev/null +++ b/docs/history/1.5.1/Classes/ButtonProduct.html @@ -0,0 +1,279 @@ + + + + ButtonProduct Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProduct

+

A concrete implementation of the ButtonProductCompatible protocol.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Classes/Order.html b/docs/history/1.5.1/Classes/Order.html new file mode 100644 index 0000000..b87d7a8 --- /dev/null +++ b/docs/history/1.5.1/Classes/Order.html @@ -0,0 +1,239 @@ + + + + Order Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Order

+

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

+ +
+
+
+
    +
  • +
    + + + + currencyCode + +
    +
    +
    +
    +
    +
    +

    The ISO 4217 currency code (default is USD).

    + +
    +
    +
    +
  • +
  • +
    + + + + customerOrderId + +
    +
    +
    +
    +
    +
    +

    The customer-facing order id.

    + +
    +
    +
    +
  • +
  • +
    + + + + customer + +
    +
    +
    +
    +
    +
    +

    The customer related to the order

    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an order object with the passed parameters.

    + +
      +
    • id: The order identifier (required).
    • +
    • purchaseDate: The date of the purchase for the order.
    • +
    • lineItems: A list of the line item details that comprise the order.
    • +
    + +
    +
    +
    +
  • +
  • +
    + + + + Customer + +
    +
    +
    +
    +
    +
    +

    Represents a customer in the order.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + LineItem + +
    +
    +
    +
    +
    +
    +

    Represents a line item in the order.

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Classes/Order/Customer.html b/docs/history/1.5.1/Classes/Order/Customer.html new file mode 100644 index 0000000..d4e3385 --- /dev/null +++ b/docs/history/1.5.1/Classes/Order/Customer.html @@ -0,0 +1,181 @@ + + + + Customer Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Customer

+

Represents a customer in the order.

+ +
+
+
+
    +
  • +
    + + + + email + +
    +
    +
    +
    +
    +
    +

    The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

    + +

    Note: The value of the e-mail address must be converted to lowercase before +computing the hash. The hash itself may use uppercase or lowercase hex characters.

    + +
    +
    +
    +
  • +
  • +
    + + + + isNew + +
    +
    +
    +
    +
    +
    +

    A flag indicating whether the customer is new (or not).

    + +
    +
    +
    +
  • +
  • +
    + + + + init(id:) + +
    +
    +
    +
    +
    +
    +

    Initializes a customer object with the passed parameters.

    + +
      +
    • id: The id for your customer (required).
    • +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Classes/Order/LineItem.html b/docs/history/1.5.1/Classes/Order/LineItem.html new file mode 100644 index 0000000..c890c6d --- /dev/null +++ b/docs/history/1.5.1/Classes/Order/LineItem.html @@ -0,0 +1,251 @@ + + + + LineItem Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineItem

+

Represents a line item in the order.

+ +
+
+
+
    +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The number of unique units represented by this line item (default is 1).

    + +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    Text describing the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + sku + +
    +
    +
    +
    +
    +
    +

    The Stock Keeping Unit of the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The Universal Product Code of the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + category + +
    +
    +
    +
    +
    +
    +

    The category of the line item. +An ordered list of strings, starting with the topmost (or most general) category.

    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    A key/value store for strings to specify additional information about a line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + init(id:total:) + +
    +
    +
    +
    +
    +
    +

    An array of the line item details that comprise the order

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Enums.html b/docs/history/1.5.1/Enums.html new file mode 100644 index 0000000..7786511 --- /dev/null +++ b/docs/history/1.5.1/Enums.html @@ -0,0 +1,198 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchantError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Errors.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConfigurationError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NetworkError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Enums/ButtonMerchantError.html b/docs/history/1.5.1/Enums/ButtonMerchantError.html new file mode 100644 index 0000000..ef48629 --- /dev/null +++ b/docs/history/1.5.1/Enums/ButtonMerchantError.html @@ -0,0 +1,159 @@ + + + + ButtonMerchantError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/docs/history/1.5.1/Enums/ConfigurationError.html b/docs/history/1.5.1/Enums/ConfigurationError.html new file mode 100644 index 0000000..1ab622d --- /dev/null +++ b/docs/history/1.5.1/Enums/ConfigurationError.html @@ -0,0 +1,171 @@ + + + + ConfigurationError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ConfigurationError

+
+
+ + +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Enums/NetworkError.html b/docs/history/1.5.1/Enums/NetworkError.html new file mode 100644 index 0000000..9ca9cee --- /dev/null +++ b/docs/history/1.5.1/Enums/NetworkError.html @@ -0,0 +1,142 @@ + + + + NetworkError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

NetworkError

+
+
+ + +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + unknown + +
    +
    +
    +
    +
    +
    +

    There was an unknown network error.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Protocols.html b/docs/history/1.5.1/Protocols.html new file mode 100644 index 0000000..e92c54f --- /dev/null +++ b/docs/history/1.5.1/Protocols.html @@ -0,0 +1,177 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Activity + +
    +
    +
    +
    +
    +
    +

    A protocol through which user activities can be reported.

    + + See more +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A protocol that defines the product properties that may be provided when reporting user activity.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + Configurable + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Protocols/Activity.html b/docs/history/1.5.1/Protocols/Activity.html new file mode 100644 index 0000000..19c016e --- /dev/null +++ b/docs/history/1.5.1/Protocols/Activity.html @@ -0,0 +1,186 @@ + + + + Activity Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Activity

+

A protocol through which user activities can be reported.

+ +
+
+
+
    +
  • +
    + + + + productViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user has viewed a product.

    + +
      +
    • product: The product being viewed.
    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Report that the user added a product to their cart.

    + +
      +
    • product: The product added to the cart.
    • +
    + +
    +
    +
    +
  • +
  • +
    + + + + cartViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user viewed their cart.

    + +
      +
    • products: The list of products in the cart.
    • +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Protocols/ButtonProductCompatible.html b/docs/history/1.5.1/Protocols/ButtonProductCompatible.html new file mode 100644 index 0000000..5cfd1b6 --- /dev/null +++ b/docs/history/1.5.1/Protocols/ButtonProductCompatible.html @@ -0,0 +1,288 @@ + + + + ButtonProductCompatible Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProductCompatible

+

A protocol that defines the product properties that may be provided when reporting user activity.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    The product identifier.

    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The UPC (Universal Product Code) of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    +

    A flat array of the names of the categories to which the product belongs.

    + +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    +

    The ISO-4217 currency code in which the product’s value is reported.

    + +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

    + +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The quantity of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    +

    The URL of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Any additional attributes to be included with the product.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Protocols/Configurable.html b/docs/history/1.5.1/Protocols/Configurable.html new file mode 100644 index 0000000..6d710ef --- /dev/null +++ b/docs/history/1.5.1/Protocols/Configurable.html @@ -0,0 +1,138 @@ + + + + Configurable Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Configurable

+

An interface through which library features can be enabled/disabled.

+ +
+
+
+
    +
  • +
    + + + + includesIFA + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the library will attach IFA to outgoing requests.

    + +

    The default value is true. If set to false, or if the user has limited IFA usage in their device settings, the IFA will not be attached.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/Structs.html b/docs/history/1.5.1/Structs.html new file mode 100644 index 0000000..2a2ea41 --- /dev/null +++ b/docs/history/1.5.1/Structs.html @@ -0,0 +1,141 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/docs/history/1.5.1/badge.svg b/docs/history/1.5.1/badge.svg new file mode 100644 index 0000000..a5d7e55 --- /dev/null +++ b/docs/history/1.5.1/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 0% + + + 0% + + + diff --git a/docs/history/1.5.1/css/highlight.css b/docs/history/1.5.1/css/highlight.css new file mode 100644 index 0000000..c170357 --- /dev/null +++ b/docs/history/1.5.1/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/history/1.5.1/css/jazzy.css b/docs/history/1.5.1/css/jazzy.css new file mode 100644 index 0000000..2e38713 --- /dev/null +++ b/docs/history/1.5.1/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Info.plist b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Info.plist new file mode 100644 index 0000000..49cb17c --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.buttonmerchant + CFBundleName + ButtonMerchant + DocSetPlatformFamily + buttonmerchant + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html new file mode 100644 index 0000000..b0ccec7 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes.html @@ -0,0 +1,181 @@ + + + + Classes Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchant + +
    +
    +
    +
    +
    +
    +

    ButtonMerchant is the main entry point to the library.

    + +

    To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + ButtonProduct + +
    +
    +
    +
    +
    +
    +

    A concrete implementation of the ButtonProductCompatible protocol.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + Order + +
    +
    +
    +
    +
    +
    +

    Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html new file mode 100644 index 0000000..f58dc3c --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonMerchant.html @@ -0,0 +1,355 @@ + + + + ButtonMerchant Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonMerchant

+

ButtonMerchant is the main entry point to the library.

+ +

To get started with your integration, +get your application Id from from the Button Dashboard. +and follow our simple integration guide

+ +
+
+
+
    +
  • +
    + + + + attributionToken + +
    +
    +
    +
    +
    +
    +

    The last tracked attributionToken from an inbound Button attributed URL.

    +
    +

    Attention

    + > For attribution to work correctly, you must: + +
      +
    • Always access this token directly—never cache it.
    • +
    • Never manage the lifecycle of this token—Button manages the token validity window server-side.
    • +
    • Always include this value when reporting orders to your order API
    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Configures ButtonMerchant with your application Id.

    +
    +

    Note

    +

    Note:

    + +
    +

    Get your application Id from from the Button Dashboard

    +
    + +
    + +
    +
    +
    +
  • +
  • +
    + + + + trackIncomingURL(_:) + +
    +
    +
    +
    +
    +
    +

    Checks the passed URL for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    To correctly attribute customers, you must call this method with every +incoming url and userActivity from the following UIApplicationDelegate methods:

    +
    + +
      +
    • application(_:open:options:)

    • +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    To correctly attribute customers, you must call this method with every +incoming userActivity from the following UIApplicationDelegate method:

    +
    + +
      +
    • application(_:userActivity:restorationHandler:)

    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks to see if the user visited a url prior to installing your app.

    + +

    If a url is found, your completion handler will be called with the url and you are responsible +for navigating the user to the relevant content in your app. If a url is not found or an error occurs, your +completion handler will be called without a url and you can continue with your normal launch sequence.

    +
    +

    Attention

    +

    Attention:

    + +
    +

    This method checks for a post-install url exactly one time after a user has installed your app. +Subsequent calls will result in your completion handler being called without a url. You do not need to wait +for the completion handler before continuing with your normal launch sequence but you should be prepared +to handle a post-install url if one is found. All subsequent incoming urls will be routed to your +UIApplicationDelegate as usual.

    +
    + +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Reports an order to Button.

    + +

    See also: Reporting Orders to Button +(docs)

    + +
    +
    +
    +
  • +
  • +
    + + + + clearAllData() + +
    +
    +
    +
    +
    +
    +

    Discards the current session and all persisted data.

    + +
    +
    +
    +
  • +
  • +
    + + + + features + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + +
    +
    +
    +
  • +
  • +
    + + + + activity + +
    +
    +
    +
    +
    +
    +

    An interface through which user activity can be reported.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html new file mode 100644 index 0000000..0c42194 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/ButtonProduct.html @@ -0,0 +1,279 @@ + + + + ButtonProduct Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProduct

+

A concrete implementation of the ButtonProductCompatible protocol.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html new file mode 100644 index 0000000..b87d7a8 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order.html @@ -0,0 +1,239 @@ + + + + Order Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Order

+

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

+ +
+
+
+
    +
  • +
    + + + + currencyCode + +
    +
    +
    +
    +
    +
    +

    The ISO 4217 currency code (default is USD).

    + +
    +
    +
    +
  • +
  • +
    + + + + customerOrderId + +
    +
    +
    +
    +
    +
    +

    The customer-facing order id.

    + +
    +
    +
    +
  • +
  • +
    + + + + customer + +
    +
    +
    +
    +
    +
    +

    The customer related to the order

    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Initializes an order object with the passed parameters.

    + +
      +
    • id: The order identifier (required).
    • +
    • purchaseDate: The date of the purchase for the order.
    • +
    • lineItems: A list of the line item details that comprise the order.
    • +
    + +
    +
    +
    +
  • +
  • +
    + + + + Customer + +
    +
    +
    +
    +
    +
    +

    Represents a customer in the order.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + LineItem + +
    +
    +
    +
    +
    +
    +

    Represents a line item in the order.

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html new file mode 100644 index 0000000..d4e3385 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/Customer.html @@ -0,0 +1,181 @@ + + + + Customer Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Customer

+

Represents a customer in the order.

+ +
+
+
+
    +
  • +
    + + + + email + +
    +
    +
    +
    +
    +
    +

    The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

    + +

    Note: The value of the e-mail address must be converted to lowercase before +computing the hash. The hash itself may use uppercase or lowercase hex characters.

    + +
    +
    +
    +
  • +
  • +
    + + + + isNew + +
    +
    +
    +
    +
    +
    +

    A flag indicating whether the customer is new (or not).

    + +
    +
    +
    +
  • +
  • +
    + + + + init(id:) + +
    +
    +
    +
    +
    +
    +

    Initializes a customer object with the passed parameters.

    + +
      +
    • id: The id for your customer (required).
    • +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html new file mode 100644 index 0000000..c890c6d --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Classes/Order/LineItem.html @@ -0,0 +1,251 @@ + + + + LineItem Class Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

LineItem

+

Represents a line item in the order.

+ +
+
+
+
    +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The number of unique units represented by this line item (default is 1).

    + +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    Text describing the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + sku + +
    +
    +
    +
    +
    +
    +

    The Stock Keeping Unit of the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The Universal Product Code of the line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + category + +
    +
    +
    +
    +
    +
    +

    The category of the line item. +An ordered list of strings, starting with the topmost (or most general) category.

    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    A key/value store for strings to specify additional information about a line item.

    + +
    +
    +
    +
  • +
  • +
    + + + + init(id:total:) + +
    +
    +
    +
    +
    +
    +

    An array of the line item details that comprise the order

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 0000000..7786511 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,198 @@ + + + + Enumerations Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + ButtonMerchantError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Errors.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
  • +
    + + + + ConfigurationError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
  • +
    + + + + NetworkError + +
    +
    +
    +
    +
    +
    +

    Button Merchant Library Configuration Error.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    + +
    +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html new file mode 100644 index 0000000..ef48629 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ButtonMerchantError.html @@ -0,0 +1,159 @@ + + + + ButtonMerchantError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html new file mode 100644 index 0000000..1ab622d --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/ConfigurationError.html @@ -0,0 +1,171 @@ + + + + ConfigurationError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ConfigurationError

+
+
+ + +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+ +
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html new file mode 100644 index 0000000..9ca9cee --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Enums/NetworkError.html @@ -0,0 +1,142 @@ + + + + NetworkError Enumeration Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

NetworkError

+
+
+ + +
+
+

Button Merchant Library Configuration Error.

+ +
+
+
+
    +
  • +
    + + + + unknown + +
    +
    +
    +
    +
    +
    +

    There was an unknown network error.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 0000000..e92c54f --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,177 @@ + + + + Protocols Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • +
    + + + + Activity + +
    +
    +
    +
    +
    +
    +

    A protocol through which user activities can be reported.

    + + See more +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A protocol that defines the product properties that may be provided when reporting user activity.

    + + See more +
    +
    +
    +
  • +
  • +
    + + + + Configurable + +
    +
    +
    +
    +
    +
    +

    An interface through which library features can be enabled/disabled.

    + + See more +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html new file mode 100644 index 0000000..19c016e --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Activity.html @@ -0,0 +1,186 @@ + + + + Activity Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Activity

+

A protocol through which user activities can be reported.

+ +
+
+
+
    +
  • +
    + + + + productViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user has viewed a product.

    + +
      +
    • product: The product being viewed.
    • +
    + +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Report that the user added a product to their cart.

    + +
      +
    • product: The product added to the cart.
    • +
    + +
    +
    +
    +
  • +
  • +
    + + + + cartViewed(_:) + +
    +
    +
    +
    +
    +
    +

    Report that the user viewed their cart.

    + +
      +
    • products: The list of products in the cart.
    • +
    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html new file mode 100644 index 0000000..5cfd1b6 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/ButtonProductCompatible.html @@ -0,0 +1,288 @@ + + + + ButtonProductCompatible Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

ButtonProductCompatible

+

A protocol that defines the product properties that may be provided when reporting user activity.

+ +
+
+
+
    +
  • +
    + + + + id + +
    +
    +
    +
    +
    +
    +

    The product identifier.

    + +
    +
    +
    +
  • +
  • +
    + + + + upc + +
    +
    +
    +
    +
    +
    +

    The UPC (Universal Product Code) of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + categories + +
    +
    +
    +
    +
    +
    +

    A flat array of the names of the categories to which the product belongs.

    + +
    +
    +
    +
  • +
  • +
    + + + + name + +
    +
    +
    +
    +
    +
    +

    The name of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + currency + +
    +
    +
    +
    +
    +
    +

    The ISO-4217 currency code in which the product’s value is reported.

    + +
    +
    +
    +
  • +
  • +
    + + + + value + +
    +
    +
    +
    +
    +
    +

    The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

    + +
    +
    +
    +
  • +
  • +
    + + + + quantity + +
    +
    +
    +
    +
    +
    +

    The quantity of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + url + +
    +
    +
    +
    +
    +
    +

    The URL of the product.

    + +
    +
    +
    +
  • +
  • +
    + + + + attributes + +
    +
    +
    +
    +
    +
    +

    Any additional attributes to be included with the product.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html new file mode 100644 index 0000000..6d710ef --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Protocols/Configurable.html @@ -0,0 +1,138 @@ + + + + Configurable Protocol Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+

Configurable

+

An interface through which library features can be enabled/disabled.

+ +
+
+
+
    +
  • +
    + + + + includesIFA + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the library will attach IFA to outgoing requests.

    + +

    The default value is true. If set to false, or if the user has limited IFA usage in their device settings, the IFA will not be attached.

    + +
    +
    +
    +
  • +
+
+
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html new file mode 100644 index 0000000..2a2ea41 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/Structs.html @@ -0,0 +1,141 @@ + + + + Structures Reference + + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ + +
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 0000000..c170357 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 0000000..2e38713 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,439 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #f2f2f2; + font-family: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 100; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +.section-name { + color: gray; + display: block; + font-family: Helvetica; + font-size: 22px; + font-weight: 100; + margin-bottom: 15px; } + +pre, code { + font: 0.95em Menlo, monospace; + color: #777; + word-wrap: normal; } + +p code, li code { + background-color: #eee; + padding: 2px 4px; + border-radius: 4px; } + +pre > code { + padding: 0; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + +.content-wrapper { + margin: 0 auto; + width: 980px; } + +header { + font-size: 0.85em; + line-height: 32px; + background-color: #414141; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -3px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs { + background-color: #f2f2f2; + height: 21px; + padding-top: 17px; + position: fixed; + width: 100%; + z-index: 2; + margin-top: 32px; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + +.sidebar { + background-color: #f9f9f9; + border: 1px solid #e2e2e2; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + top: 70px; + bottom: 0; + width: 230px; + word-wrap: normal; } + +.nav-groups { + list-style-type: none; + background: #fff; + padding-left: 0; } + +.nav-group-name { + border-bottom: 1px solid #e2e2e2; + font-size: 1.1em; + font-weight: 100; + padding: 15px 0 15px 20px; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + margin-top: 5px; } + +.nav-group-task { + font-size: 0.9em; + list-style-type: none; + white-space: nowrap; } + .nav-group-task a { + color: #888; } + +.main-content { + background-color: #fff; + border: 1px solid #e2e2e2; + margin-left: 246px; + position: absolute; + overflow: hidden; + padding-bottom: 20px; + top: 70px; + width: 734px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.8em; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + background-color: inherit; + padding: inherit; + color: inherit; } + +.section { + padding: 0 25px; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + margin: 0; + margin-left: 18px; } + +.task-group-section { + margin-top: 10px; + padding-left: 6px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 70px; + margin: -70px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 35px; + font-size: 11.9px; + transition: all 300ms; } + .item .token-open { + margin-left: 20px; } + .item .discouraged { + text-decoration: line-through; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + border-bottom: 1px solid #e2e2e2; + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + left: -25px; + padding: 0 25px; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + background: #f9f9f9; + border-bottom: 1px solid #e2e2e2; + left: -25px; + position: relative; + width: 100%; + padding-top: 10px; + padding-bottom: 5px; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 9px; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + position: relative; + top: 10px; + bottom: 0px; + margin-left: 25px; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs, html.dash .sidebar { + display: none; } + +html.dash .main-content { + width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +form[role=search] { + float: right; } + form[role=search] input { + font: Helvetica, freesans, Arial, sans-serif; + margin-top: 6px; + font-size: 13px; + line-height: 20px; + padding: 0px 10px; + border: none; + border-radius: 1em; } + .loading form[role=search] input { + background: white url(../img/spinner.gif) center right 4px no-repeat; } + form[role=search] .tt-menu { + margin: 0; + min-width: 300px; + background: #fff; + color: #333; + border: 1px solid #e2e2e2; + z-index: 4; } + form[role=search] .tt-highlight { + font-weight: bold; } + form[role=search] .tt-suggestion { + font: Helvetica, freesans, Arial, sans-serif; + font-size: 14px; + padding: 0 8px; } + form[role=search] .tt-suggestion span { + display: table-cell; + white-space: nowrap; } + form[role=search] .tt-suggestion .doc-parent-name { + width: 100%; + text-align: right; + font-weight: normal; + font-size: 0.9em; + padding-left: 16px; } + form[role=search] .tt-suggestion:hover, + form[role=search] .tt-suggestion.tt-cursor { + cursor: pointer; + background-color: #4183c4; + color: #fff; } + form[role=search] .tt-suggestion:hover .doc-parent-name, + form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { + color: #fff; } diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html new file mode 100644 index 0000000..f30389e --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,156 @@ + + + + ButtonMerchant Reference + + + + + + + + + + + + +
+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Button Merchant Library

+ +

License: MIT +Coverage Status +Version +Platform

+

Documentation

+ +

Documentation for the Merchant Library can be found on the Button Developer site.

+ +

Reference docs are also available.

+

Example

+ +

To run the example project, clone the repo, run pod install, and run the Example scheme.

+

Installation

+ +

ButtonMerchant is available through CocoaPods and Carthage.

+

Swift Pacakage Manager

+ +

In Xcode, navigate to File → Swift Packages → Add Package Dependency

+ +

Enter the package repository URL:

+ +

https://github.com/button/button-merchant-ios

+ +

Note: Ensure to select ‘Up to Next Major’ version when prompted.

+

CocoaPods

+ +

Add this line to your Podfile:

+
pod 'ButtonMerchant'
+
+

Carthage

+ +

Or, add this to your Cartfile:

+
github "button/button-merchant-ios" ~> 1.0
+
+

Author

+ +

Button, Inc.

+

License

+ +

ButtonMerchant is available under the MIT license. See the LICENSE file for more info.

+

Contributing

+ +

We are looking forward to accepting your contributions to this project very soon!

+ +

Until then, if you have something you would like to contribute, please get in touch.

+ +
+
+ +
+
+ + diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 0000000..1984416 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 0000000..359cdbb --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS 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&&"function"!=typeof e.item},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.6.0",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&&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=[],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},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&&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 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),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",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 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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.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,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.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):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]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(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 $(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 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json new file mode 100644 index 0000000..bdbc17f --- /dev/null +++ b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Structs.html#/Version":{"name":"Version","abstract":"

Button Merchant Library Version.

"},"Protocols/Configurable.html#/includesIFA":{"name":"includesIFA","abstract":"

Indicates whether or not the library will attach IFA to outgoing requests.

","parent_name":"Configurable"},"Protocols/ButtonProductCompatible.html#/id":{"name":"id","abstract":"

The product identifier.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/upc":{"name":"upc","abstract":"

The UPC (Universal Product Code) of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/categories":{"name":"categories","abstract":"

A flat array of the names of the categories to which the product belongs.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/name":{"name":"name","abstract":"

The name of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/currency":{"name":"currency","abstract":"

The ISO-4217 currency code in which the product’s value is reported.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/value":{"name":"value","abstract":"

The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/quantity":{"name":"quantity","abstract":"

The quantity of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/url":{"name":"url","abstract":"

The URL of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/attributes":{"name":"attributes","abstract":"

Any additional attributes to be included with the product.

","parent_name":"ButtonProductCompatible"},"Protocols/Activity.html#/productViewed(_:)":{"name":"productViewed(_:)","abstract":"

Report that the user has viewed a product.

","parent_name":"Activity"},"Protocols/Activity.html#/productAddedToCart(_:)":{"name":"productAddedToCart(_:)","abstract":"

Report that the user added a product to their cart.

","parent_name":"Activity"},"Protocols/Activity.html#/cartViewed(_:)":{"name":"cartViewed(_:)","abstract":"

Report that the user viewed their cart.

","parent_name":"Activity"},"Protocols/Activity.html":{"name":"Activity","abstract":"

A protocol through which user activities can be reported.

"},"Protocols/ButtonProductCompatible.html":{"name":"ButtonProductCompatible","abstract":"

A protocol that defines the product properties that may be provided when reporting user activity.

"},"Protocols/Configurable.html":{"name":"Configurable","abstract":"

An interface through which library features can be enabled/disabled.

"},"Enums/NetworkError.html#/unknown":{"name":"unknown","abstract":"

There was an unknown network error.

","parent_name":"NetworkError"},"Enums/ConfigurationError.html#/noApplicationId":{"name":"noApplicationId","abstract":"

Library is not configured with an applicationId

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/invalidApplicationId(appicationId:)":{"name":"invalidApplicationId(appicationId:)","abstract":"

Library is not configured with a valid applicationId

","parent_name":"ConfigurationError"},"Enums/ButtonMerchantError.html#/trackOrderDeprecationError":{"name":"trackOrderDeprecationError","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html#/noEventsError":{"name":"noEventsError","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html":{"name":"ButtonMerchantError","abstract":"

Button Merchant Library Errors.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

Button Merchant Library Configuration Error.

"},"Enums/NetworkError.html":{"name":"NetworkError","abstract":"

Button Merchant Library Configuration Error.

"},"Classes/Order/LineItem.html#/quantity":{"name":"quantity","abstract":"

The number of unique units represented by this line item (default is 1).

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/itemDescription":{"name":"itemDescription","abstract":"

Text describing the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/sku":{"name":"sku","abstract":"

The Stock Keeping Unit of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/upc":{"name":"upc","abstract":"

The Universal Product Code of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/category":{"name":"category","abstract":"

The category of the line item.","parent_name":"LineItem"},"Classes/Order/LineItem.html#/attributes":{"name":"attributes","abstract":"

A key/value store for strings to specify additional information about a line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/init(id:total:)":{"name":"init(id:total:)","abstract":"

An array of the line item details that comprise the order

","parent_name":"LineItem"},"Classes/Order/Customer.html#/email":{"name":"email","abstract":"

The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

","parent_name":"Customer"},"Classes/Order/Customer.html#/isNew":{"name":"isNew","abstract":"

A flag indicating whether the customer is new (or not).

","parent_name":"Customer"},"Classes/Order/Customer.html#/init(id:)":{"name":"init(id:)","abstract":"

Initializes a customer object with the passed parameters.

","parent_name":"Customer"},"Classes/Order.html#/currencyCode":{"name":"currencyCode","abstract":"

The ISO 4217 currency code (default is USD).

","parent_name":"Order"},"Classes/Order.html#/customerOrderId":{"name":"customerOrderId","abstract":"

The customer-facing order id.

","parent_name":"Order"},"Classes/Order.html#/customer":{"name":"customer","abstract":"

The customer related to the order

","parent_name":"Order"},"Classes/Order.html#/init(id:purchaseDate:lineItems:)":{"name":"init(id:purchaseDate:lineItems:)","abstract":"

Initializes an order object with the passed parameters.

","parent_name":"Order"},"Classes/Order/Customer.html":{"name":"Customer","abstract":"

Represents a customer in the order.

","parent_name":"Order"},"Classes/Order/LineItem.html":{"name":"LineItem","abstract":"

Represents a line item in the order.

","parent_name":"Order"},"Classes/ButtonProduct.html#/id":{"name":"id","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/upc":{"name":"upc","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/categories":{"name":"categories","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/name":{"name":"name","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/currency":{"name":"currency","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/value":{"name":"value","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/quantity":{"name":"quantity","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/url":{"name":"url","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/attributes":{"name":"attributes","parent_name":"ButtonProduct"},"Classes/ButtonMerchant.html#/attributionToken":{"name":"attributionToken","abstract":"

The last tracked attributionToken from an inbound Button attributed URL.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/configure(applicationId:)":{"name":"configure(applicationId:)","abstract":"

Configures ButtonMerchant with your application Id.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/trackIncomingURL(_:)":{"name":"trackIncomingURL(_:)","abstract":"

Checks the passed URL for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/trackIncomingUserActivity(_:)":{"name":"trackIncomingUserActivity(_:)","abstract":"

Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/handlePostInstallURL(_:)":{"name":"handlePostInstallURL(_:)","abstract":"

Checks to see if the user visited a url prior to installing your app.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/reportOrder(_:completion:)":{"name":"reportOrder(_:completion:)","abstract":"

Reports an order to Button.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/clearAllData()":{"name":"clearAllData()","abstract":"

Discards the current session and all persisted data.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/features":{"name":"features","abstract":"

An interface through which library features can be enabled/disabled.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/activity":{"name":"activity","abstract":"

An interface through which user activity can be reported.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html":{"name":"ButtonMerchant","abstract":"

ButtonMerchant is the main entry point to the library.

"},"Classes/ButtonProduct.html":{"name":"ButtonProduct","abstract":"

A concrete implementation of the ButtonProductCompatible protocol.

"},"Classes/Order.html":{"name":"Order","abstract":"

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx b/docs/history/1.5.1/docsets/ButtonMerchant.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 0000000000000000000000000000000000000000..99da0281b52b95f5eee984ab632c9a118b002ce0 GIT binary patch literal 28672 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/docsets/ButtonMerchant.tgz b/docs/history/1.5.1/docsets/ButtonMerchant.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1cfeff0a73393dcadee797f727a2ec05b74180f3 GIT binary patch literal 76899 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

pS-YlgR1FCvwa@fKEL_S8}Hos58_Fm-+Sv7 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

dS~ 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/img/carat.png b/docs/history/1.5.1/img/carat.png new file mode 100755 index 0000000000000000000000000000000000000000..29d2f7fd4955fca6bc6fb740e0373a2c358c398e GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/img/dash.png b/docs/history/1.5.1/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/docs/history/1.5.1/index.html b/docs/history/1.5.1/index.html new file mode 100644 index 0000000..f30389e --- /dev/null +++ b/docs/history/1.5.1/index.html @@ -0,0 +1,156 @@ + + + + ButtonMerchant Reference + + + + + + + + + + + + +

+
+

ButtonMerchant 1.5.1 Docs (0% documented)

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Button Merchant Library

+ +

License: MIT +Coverage Status +Version +Platform

+

Documentation

+ +

Documentation for the Merchant Library can be found on the Button Developer site.

+ +

Reference docs are also available.

+

Example

+ +

To run the example project, clone the repo, run pod install, and run the Example scheme.

+

Installation

+ +

ButtonMerchant is available through CocoaPods and Carthage.

+

Swift Pacakage Manager

+ +

In Xcode, navigate to File → Swift Packages → Add Package Dependency

+ +

Enter the package repository URL:

+ +

https://github.com/button/button-merchant-ios

+ +

Note: Ensure to select ‘Up to Next Major’ version when prompted.

+

CocoaPods

+ +

Add this line to your Podfile:

+
pod 'ButtonMerchant'
+
+

Carthage

+ +

Or, add this to your Cartfile:

+
github "button/button-merchant-ios" ~> 1.0
+
+

Author

+ +

Button, Inc.

+

License

+ +

ButtonMerchant is available under the MIT license. See the LICENSE file for more info.

+

Contributing

+ +

We are looking forward to accepting your contributions to this project very soon!

+ +

Until then, if you have something you would like to contribute, please get in touch.

+ +
+
+ +
+
+ + diff --git a/docs/history/1.5.1/js/jazzy.js b/docs/history/1.5.1/js/jazzy.js new file mode 100755 index 0000000..1984416 --- /dev/null +++ b/docs/history/1.5.1/js/jazzy.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/docs/history/1.5.1/js/jazzy.search.js b/docs/history/1.5.1/js/jazzy.search.js new file mode 100644 index 0000000..359cdbb --- /dev/null +++ b/docs/history/1.5.1/js/jazzy.search.js @@ -0,0 +1,74 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/docs/history/1.5.1/js/jquery.min.js b/docs/history/1.5.1/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/docs/history/1.5.1/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS 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&&"function"!=typeof e.item},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.6.0",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&&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=[],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},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&&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 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),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",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 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 _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.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(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.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,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.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):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]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(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 $(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 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/history/1.5.1/js/typeahead.jquery.js b/docs/history/1.5.1/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/docs/history/1.5.1/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/docs/history/1.5.1/search.json b/docs/history/1.5.1/search.json new file mode 100644 index 0000000..bdbc17f --- /dev/null +++ b/docs/history/1.5.1/search.json @@ -0,0 +1 @@ +{"Structs.html#/Version":{"name":"Version","abstract":"

Button Merchant Library Version.

"},"Protocols/Configurable.html#/includesIFA":{"name":"includesIFA","abstract":"

Indicates whether or not the library will attach IFA to outgoing requests.

","parent_name":"Configurable"},"Protocols/ButtonProductCompatible.html#/id":{"name":"id","abstract":"

The product identifier.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/upc":{"name":"upc","abstract":"

The UPC (Universal Product Code) of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/categories":{"name":"categories","abstract":"

A flat array of the names of the categories to which the product belongs.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/name":{"name":"name","abstract":"

The name of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/currency":{"name":"currency","abstract":"

The ISO-4217 currency code in which the product’s value is reported.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/value":{"name":"value","abstract":"

The value of the order. Includes any discounts, if applicable. Example: 1234 for $12.34.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/quantity":{"name":"quantity","abstract":"

The quantity of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/url":{"name":"url","abstract":"

The URL of the product.

","parent_name":"ButtonProductCompatible"},"Protocols/ButtonProductCompatible.html#/attributes":{"name":"attributes","abstract":"

Any additional attributes to be included with the product.

","parent_name":"ButtonProductCompatible"},"Protocols/Activity.html#/productViewed(_:)":{"name":"productViewed(_:)","abstract":"

Report that the user has viewed a product.

","parent_name":"Activity"},"Protocols/Activity.html#/productAddedToCart(_:)":{"name":"productAddedToCart(_:)","abstract":"

Report that the user added a product to their cart.

","parent_name":"Activity"},"Protocols/Activity.html#/cartViewed(_:)":{"name":"cartViewed(_:)","abstract":"

Report that the user viewed their cart.

","parent_name":"Activity"},"Protocols/Activity.html":{"name":"Activity","abstract":"

A protocol through which user activities can be reported.

"},"Protocols/ButtonProductCompatible.html":{"name":"ButtonProductCompatible","abstract":"

A protocol that defines the product properties that may be provided when reporting user activity.

"},"Protocols/Configurable.html":{"name":"Configurable","abstract":"

An interface through which library features can be enabled/disabled.

"},"Enums/NetworkError.html#/unknown":{"name":"unknown","abstract":"

There was an unknown network error.

","parent_name":"NetworkError"},"Enums/ConfigurationError.html#/noApplicationId":{"name":"noApplicationId","abstract":"

Library is not configured with an applicationId

","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/invalidApplicationId(appicationId:)":{"name":"invalidApplicationId(appicationId:)","abstract":"

Library is not configured with a valid applicationId

","parent_name":"ConfigurationError"},"Enums/ButtonMerchantError.html#/trackOrderDeprecationError":{"name":"trackOrderDeprecationError","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html#/noEventsError":{"name":"noEventsError","parent_name":"ButtonMerchantError"},"Enums/ButtonMerchantError.html":{"name":"ButtonMerchantError","abstract":"

Button Merchant Library Errors.

"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"

Button Merchant Library Configuration Error.

"},"Enums/NetworkError.html":{"name":"NetworkError","abstract":"

Button Merchant Library Configuration Error.

"},"Classes/Order/LineItem.html#/quantity":{"name":"quantity","abstract":"

The number of unique units represented by this line item (default is 1).

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/itemDescription":{"name":"itemDescription","abstract":"

Text describing the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/sku":{"name":"sku","abstract":"

The Stock Keeping Unit of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/upc":{"name":"upc","abstract":"

The Universal Product Code of the line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/category":{"name":"category","abstract":"

The category of the line item.","parent_name":"LineItem"},"Classes/Order/LineItem.html#/attributes":{"name":"attributes","abstract":"

A key/value store for strings to specify additional information about a line item.

","parent_name":"LineItem"},"Classes/Order/LineItem.html#/init(id:total:)":{"name":"init(id:total:)","abstract":"

An array of the line item details that comprise the order

","parent_name":"LineItem"},"Classes/Order/Customer.html#/email":{"name":"email","abstract":"

The SHA-256 hash of the transacting customer’s lowercase email, as a 64-character hex string.

","parent_name":"Customer"},"Classes/Order/Customer.html#/isNew":{"name":"isNew","abstract":"

A flag indicating whether the customer is new (or not).

","parent_name":"Customer"},"Classes/Order/Customer.html#/init(id:)":{"name":"init(id:)","abstract":"

Initializes a customer object with the passed parameters.

","parent_name":"Customer"},"Classes/Order.html#/currencyCode":{"name":"currencyCode","abstract":"

The ISO 4217 currency code (default is USD).

","parent_name":"Order"},"Classes/Order.html#/customerOrderId":{"name":"customerOrderId","abstract":"

The customer-facing order id.

","parent_name":"Order"},"Classes/Order.html#/customer":{"name":"customer","abstract":"

The customer related to the order

","parent_name":"Order"},"Classes/Order.html#/init(id:purchaseDate:lineItems:)":{"name":"init(id:purchaseDate:lineItems:)","abstract":"

Initializes an order object with the passed parameters.

","parent_name":"Order"},"Classes/Order/Customer.html":{"name":"Customer","abstract":"

Represents a customer in the order.

","parent_name":"Order"},"Classes/Order/LineItem.html":{"name":"LineItem","abstract":"

Represents a line item in the order.

","parent_name":"Order"},"Classes/ButtonProduct.html#/id":{"name":"id","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/upc":{"name":"upc","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/categories":{"name":"categories","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/name":{"name":"name","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/currency":{"name":"currency","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/value":{"name":"value","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/quantity":{"name":"quantity","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/url":{"name":"url","parent_name":"ButtonProduct"},"Classes/ButtonProduct.html#/attributes":{"name":"attributes","parent_name":"ButtonProduct"},"Classes/ButtonMerchant.html#/attributionToken":{"name":"attributionToken","abstract":"

The last tracked attributionToken from an inbound Button attributed URL.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/configure(applicationId:)":{"name":"configure(applicationId:)","abstract":"

Configures ButtonMerchant with your application Id.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/trackIncomingURL(_:)":{"name":"trackIncomingURL(_:)","abstract":"

Checks the passed URL for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/trackIncomingUserActivity(_:)":{"name":"trackIncomingUserActivity(_:)","abstract":"

Checks the URL in the passed NSUserActivity for a Button attribution and if present stores the token.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/handlePostInstallURL(_:)":{"name":"handlePostInstallURL(_:)","abstract":"

Checks to see if the user visited a url prior to installing your app.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/reportOrder(_:completion:)":{"name":"reportOrder(_:completion:)","abstract":"

Reports an order to Button.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/clearAllData()":{"name":"clearAllData()","abstract":"

Discards the current session and all persisted data.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/features":{"name":"features","abstract":"

An interface through which library features can be enabled/disabled.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html#/activity":{"name":"activity","abstract":"

An interface through which user activity can be reported.

","parent_name":"ButtonMerchant"},"Classes/ButtonMerchant.html":{"name":"ButtonMerchant","abstract":"

ButtonMerchant is the main entry point to the library.

"},"Classes/ButtonProduct.html":{"name":"ButtonProduct","abstract":"

A concrete implementation of the ButtonProductCompatible protocol.

"},"Classes/Order.html":{"name":"Order","abstract":"

Represents an order placed by the user to be reported using ButtonMerchant.reportOrder(order).

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"}} \ No newline at end of file diff --git a/docs/history/1.5.1/undocumented.json b/docs/history/1.5.1/undocumented.json new file mode 100644 index 0000000..3e8567a --- /dev/null +++ b/docs/history/1.5.1/undocumented.json @@ -0,0 +1,6 @@ +{ + "warnings": [ + + ], + "source_directory": "/Users/wes/Developer/button-labs-merchant-ios" +} \ No newline at end of file diff --git a/docs/latest b/docs/latest index 9060879..8502778 120000 --- a/docs/latest +++ b/docs/latest @@ -1 +1 @@ -./history/1.5.0 \ No newline at end of file +./history/1.5.1 \ No newline at end of file