workarea 3.4.16 → 3.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +81 -0
- metadata +10 -579
- data/docs/Gemfile +0 -8
- data/docs/Gemfile.lock +0 -130
- data/docs/bin/middleman +0 -29
- data/docs/config.rb +0 -87
- data/docs/config.ru +0 -7
- data/docs/data/articles.yml +0 -157
- data/docs/package.json +0 -15
- data/docs/source/404.html.erb +0 -13
- data/docs/source/articles/access-routes-in-javascript.html.md +0 -33
- data/docs/source/articles/add-a-content-area.html.md +0 -169
- data/docs/source/articles/add-a-content-block-type.html.md +0 -334
- data/docs/source/articles/add-a-report.html.md +0 -202
- data/docs/source/articles/add-css-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-javascript-through-a-manifest.html.md +0 -367
- data/docs/source/articles/add-javascript-through-a-view.html.md +0 -80
- data/docs/source/articles/add-javascript-through-the-admin-ui.html.md +0 -30
- data/docs/source/articles/add-metrics.html.md +0 -58
- data/docs/source/articles/add-or-replace-a-pricing-calculator.html.md +0 -150
- data/docs/source/articles/add-remove-or-change-a-mongoid-validation.html.md +0 -147
- data/docs/source/articles/add-remove-or-change-a-product-template.html.md +0 -142
- data/docs/source/articles/add-remove-sort-and-group-storefront-search-filters.html.md +0 -483
- data/docs/source/articles/add-stylesheets-through-a-manifest.html.md +0 -276
- data/docs/source/articles/add-system-content.html.md +0 -138
- data/docs/source/articles/analytics-overview.html.md +0 -51
- data/docs/source/articles/analyze-storefront-search-results.html.md +0 -261
- data/docs/source/articles/api-overview.html.md +0 -35
- data/docs/source/articles/appending.html.md +0 -506
- data/docs/source/articles/application-document.html.md +0 -88
- data/docs/source/articles/automated-javascript-testing.html.md +0 -162
- data/docs/source/articles/b2b-overview.html.md +0 -64
- data/docs/source/articles/browser-and-device-support.html.md +0 -47
- data/docs/source/articles/change-product-placeholder-image.html.md +0 -39
- data/docs/source/articles/change-storefront-search-results.html.md +0 -283
- data/docs/source/articles/change-the-storefront-product-pricing-ui.html.md +0 -348
- data/docs/source/articles/change-the-storefront-search-filters-ui.html.md +0 -103
- data/docs/source/articles/checkout.html.md +0 -479
- data/docs/source/articles/commerce-model.html.md +0 -164
- data/docs/source/articles/configuration-for-hosting.html.md +0 -106
- data/docs/source/articles/configuration.html.md +0 -406
- data/docs/source/articles/configure-a-payment-gateway.html.md +0 -58
- data/docs/source/articles/configure-asset-storage.html.md +0 -29
- data/docs/source/articles/configure-asset-types.html.md +0 -18
- data/docs/source/articles/configure-contact-form-subjects-list.html.md +0 -24
- data/docs/source/articles/configure-imageoptim.html.md +0 -23
- data/docs/source/articles/configure-locales.html.md +0 -45
- data/docs/source/articles/configure-logins-and-authentication.html.md +0 -42
- data/docs/source/articles/configure-low-inventory-threshold.html.md +0 -26
- data/docs/source/articles/configure-product-image-sizes-and-processing.html.md +0 -28
- data/docs/source/articles/content.html.md +0 -554
- data/docs/source/articles/contentable.html.md +0 -41
- data/docs/source/articles/contribute-code.html.md +0 -69
- data/docs/source/articles/contribute-documentation.html.md +0 -60
- data/docs/source/articles/create-a-custom-discount.html.md +0 -234
- data/docs/source/articles/create-a-new-app.html.md +0 -131
- data/docs/source/articles/create-a-plugin.html.md +0 -19
- data/docs/source/articles/create-a-style-guide.html.md +0 -71
- data/docs/source/articles/create-a-theme.html.md +0 -134
- data/docs/source/articles/css-architectural-overview.html.md +0 -89
- data/docs/source/articles/customize-a-helper.html.md +0 -91
- data/docs/source/articles/decoration.html.md +0 -415
- data/docs/source/articles/define-and-configure-inventory-policies.html.md +0 -107
- data/docs/source/articles/documentation-style-guide.html.md +0 -48
- data/docs/source/articles/documentation.html.md +0 -54
- data/docs/source/articles/domain-modeling.html.md +0 -82
- data/docs/source/articles/error-pages.html.md.erb +0 -95
- data/docs/source/articles/extension-overview.html.md +0 -152
- data/docs/source/articles/favicon-support.html.md +0 -112
- data/docs/source/articles/feature-spec-helper-stylesheet.html.md +0 -25
- data/docs/source/articles/featurejs-and-feature-spec-helper.html.md +0 -20
- data/docs/source/articles/help-and-support.html.md +0 -34
- data/docs/source/articles/html-fragment-caching.html.md +0 -46
- data/docs/source/articles/http-caching.html.md +0 -43
- data/docs/source/articles/i18n.html.md +0 -35
- data/docs/source/articles/images-flow.html.md +0 -10
- data/docs/source/articles/index-storefront-search-documents.html.md +0 -104
- data/docs/source/articles/infrastructure.html.md +0 -46
- data/docs/source/articles/installing.html.md +0 -61
- data/docs/source/articles/integrate-a-payment-gateway.html.md +0 -124
- data/docs/source/articles/integrate-a-web-analytics-provider.html.md +0 -35
- data/docs/source/articles/integrate-an-inventory-management-system.html.md +0 -88
- data/docs/source/articles/integrating-with-other-software.html.md +0 -59
- data/docs/source/articles/inventory.html.md +0 -352
- data/docs/source/articles/javascript-coding-standards.html.md +0 -30
- data/docs/source/articles/javascript-modules.html.md +0 -174
- data/docs/source/articles/javascript-overview.html.md +0 -62
- data/docs/source/articles/javascript-reference-documentation.html.md +0 -51
- data/docs/source/articles/javascript-templates.html.md +0 -52
- data/docs/source/articles/low-level-caching.html.md +0 -25
- data/docs/source/articles/maintain-a-plugin.html.md +0 -12
- data/docs/source/articles/maintenance-policy.html.md +0 -79
- data/docs/source/articles/navigable.html.md +0 -51
- data/docs/source/articles/navigating-the-code.html.md +0 -149
- data/docs/source/articles/navigation.html.md +0 -386
- data/docs/source/articles/order-life-cycle.html.md +0 -546
- data/docs/source/articles/order-pricing.html.md +0 -389
- data/docs/source/articles/orders-and-items.html.md +0 -210
- data/docs/source/articles/orders.html.md +0 -66
- data/docs/source/articles/overriding.html.md +0 -155
- data/docs/source/articles/overview.html.md +0 -43
- data/docs/source/articles/plugins-overview.html.md +0 -12
- data/docs/source/articles/prerequisites-and-dependencies.html.md +0 -202
- data/docs/source/articles/products.html.md.erb +0 -1270
- data/docs/source/articles/progressive-web-application-support.html.md +0 -148
- data/docs/source/articles/rails-asset-manifests.html.md +0 -33
- data/docs/source/articles/rails-asset-view-helpers.html.md +0 -25
- data/docs/source/articles/reading-data.html.md +0 -10
- data/docs/source/articles/releasable.html.md +0 -37
- data/docs/source/articles/report-a-bug.html.md +0 -75
- data/docs/source/articles/ruby-coding-standards.html.md +0 -10
- data/docs/source/articles/run-sidekiq-in-a-local-environment.html.md +0 -40
- data/docs/source/articles/searching.html.md +0 -1005
- data/docs/source/articles/security-policy.html.md +0 -42
- data/docs/source/articles/seeds.html.md +0 -345
- data/docs/source/articles/shipping.html.md +0 -756
- data/docs/source/articles/sort-and-exclude-product-options.html.md +0 -47
- data/docs/source/articles/storefront-search-features.html.md +0 -568
- data/docs/source/articles/storefront-searches.html.md +0 -126
- data/docs/source/articles/style-guides.html.md +0 -21
- data/docs/source/articles/stylesheet-coding-standards.html.md +0 -24
- data/docs/source/articles/stylesheets-overview.html.md +0 -67
- data/docs/source/articles/swappable-list-data-structure.html.md +0 -81
- data/docs/source/articles/system-emails.html.md +0 -102
- data/docs/source/articles/taggable.html.md +0 -8
- data/docs/source/articles/test-a-credit-card-transaction.html.md +0 -16
- data/docs/source/articles/test-if-a-plugin-is-installed.html.md +0 -34
- data/docs/source/articles/testing.html.md +0 -914
- data/docs/source/articles/themes-overview.html.md +0 -155
- data/docs/source/articles/translate-administrable-content.html.md +0 -14
- data/docs/source/articles/translate-javascript-content.html.md +0 -16
- data/docs/source/articles/translate-or-customize-message-content.html.md +0 -29
- data/docs/source/articles/translate-or-customize-static-content.html.md +0 -30
- data/docs/source/articles/use-an-existing-workarea-app.html.md +0 -108
- data/docs/source/articles/view-models.html.md +0 -509
- data/docs/source/articles/views.html.md +0 -14
- data/docs/source/articles/workers.html.md +0 -613
- data/docs/source/articles/writing-data.html.md +0 -10
- data/docs/source/cli.html.md +0 -163
- data/docs/source/favicon.ico +0 -0
- data/docs/source/images/3-variants-1-option.png +0 -0
- data/docs/source/images/3-variants-3-options.png +0 -0
- data/docs/source/images/3-years-primary-image.png +0 -0
- data/docs/source/images/404-storefront-error-page.png +0 -0
- data/docs/source/images/404-system-content-admin.png +0 -0
- data/docs/source/images/404.jpg +0 -0
- data/docs/source/images/5-years-primary-image.png +0 -0
- data/docs/source/images/activity-dashboard.png +0 -0
- data/docs/source/images/activity-for-object.png +0 -0
- data/docs/source/images/activity-ui.png +0 -0
- data/docs/source/images/adding-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/adding-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/admin-alerts-ui.png +0 -0
- data/docs/source/images/admin-category-range-filters.png +0 -0
- data/docs/source/images/admin-for-3-column-hero.png +0 -0
- data/docs/source/images/admin-help-index.png +0 -0
- data/docs/source/images/admin-help-ui.png +0 -0
- data/docs/source/images/admin-javascript.png +0 -0
- data/docs/source/images/admin-notification-for-deactivated-discount.png +0 -0
- data/docs/source/images/admin-notifications-ui.png +0 -0
- data/docs/source/images/admin-product-show-page.png +0 -0
- data/docs/source/images/admin-products-index-page.png +0 -0
- data/docs/source/images/admin-range-filters.png +0 -0
- data/docs/source/images/admin-style-guides-navigation.png +0 -0
- data/docs/source/images/after-re-seeding.png +0 -0
- data/docs/source/images/after-seeding-localhost-3000.png +0 -0
- data/docs/source/images/after-seeding.png +0 -0
- data/docs/source/images/arrow.svg +0 -1
- data/docs/source/images/arrow_white.svg +0 -1
- data/docs/source/images/aws-resource-map.png +0 -0
- data/docs/source/images/backordered-until-output-on-inventory-sku-card.png +0 -0
- data/docs/source/images/before-seeding-localhost-3000.png +0 -0
- data/docs/source/images/before-seeding.png +0 -0
- data/docs/source/images/browsing-workarea-versions-on-the-web.png +0 -0
- data/docs/source/images/bulk-asset-upload-on-assets-index-page.png +0 -0
- data/docs/source/images/bulk-asset-upload-while-editing-content.png +0 -0
- data/docs/source/images/bundle-show-workarea-core.png +0 -0
- data/docs/source/images/bundle-show-workarea.png +0 -0
- data/docs/source/images/calendar-for-backordered-until-field.png +0 -0
- data/docs/source/images/captioned-image-block-in-storefront.png +0 -0
- data/docs/source/images/captioned-image-content-block-storefront-component-style-guide.png +0 -0
- data/docs/source/images/cart-system-content-in-admin.png +0 -0
- data/docs/source/images/cart-system-content-in-storefront.png +0 -0
- data/docs/source/images/checkout-addresses-guest.png +0 -0
- data/docs/source/images/checkout-addresses-user.png +0 -0
- data/docs/source/images/checkout-confirmation.png +0 -0
- data/docs/source/images/checkout-flow-0.png +0 -0
- data/docs/source/images/checkout-flow-1.png +0 -0
- data/docs/source/images/checkout-flow-2.png +0 -0
- data/docs/source/images/checkout-flow-3.png +0 -0
- data/docs/source/images/checkout-flow-4.png +0 -0
- data/docs/source/images/checkout-payment-guest.png +0 -0
- data/docs/source/images/checkout-payment-user.png +0 -0
- data/docs/source/images/checkout-shipping.png +0 -0
- data/docs/source/images/color-picker-component-admin-style-guide.png +0 -0
- data/docs/source/images/color-picker-component-on-content-editing-screen.png +0 -0
- data/docs/source/images/commerce-model-carts-orders.png +0 -0
- data/docs/source/images/commerce-model-order-pricing.png +0 -0
- data/docs/source/images/commerce-model.png +0 -0
- data/docs/source/images/configuring-an-index-pattern-in-kibana.png +0 -0
- data/docs/source/images/content-block-presets.png +0 -0
- data/docs/source/images/content-search-customization.png +0 -0
- data/docs/source/images/country-with-region-data-in-address-form.png +0 -0
- data/docs/source/images/country-without-region-data-in-address-form.png +0 -0
- data/docs/source/images/create-content-block-preset-ui.png +0 -0
- data/docs/source/images/credit-card-icons.png +0 -0
- data/docs/source/images/css-added-through-admin.png +0 -0
- data/docs/source/images/css-admin-ui.png +0 -0
- data/docs/source/images/current-configuration-shown-in-admin-settings.png +0 -0
- data/docs/source/images/customer-impersonation-in-admin.png +0 -0
- data/docs/source/images/customer-impersonation-in-store-front.png +0 -0
- data/docs/source/images/date-filter-same-day.png +0 -0
- data/docs/source/images/developer-toolbar-in-store-front.png +0 -0
- data/docs/source/images/discounts-sorted-by-most-redeemed.png +0 -0
- data/docs/source/images/edit-help-article.png +0 -0
- data/docs/source/images/editing-content-for-search-customization.png +0 -0
- data/docs/source/images/editing-dynamic-captioned-image-block.png +0 -0
- data/docs/source/images/editing-product-fields-in-the-admin.png +0 -0
- data/docs/source/images/editing-search-system-content.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-custom-icon.png +0 -0
- data/docs/source/images/editing-static-captioned-image-block-default-icon.png +0 -0
- data/docs/source/images/external.svg +0 -1
- data/docs/source/images/favicon_16.png +0 -0
- data/docs/source/images/favicon_180.png +0 -0
- data/docs/source/images/favicon_32.png +0 -0
- data/docs/source/images/filters-all.png +0 -0
- data/docs/source/images/filters-control.png +0 -0
- data/docs/source/images/filters-custom.png +0 -0
- data/docs/source/images/filters-groups.png +0 -0
- data/docs/source/images/filters-material.png +0 -0
- data/docs/source/images/filters-omitted.png +0 -0
- data/docs/source/images/filters-pinned.png +0 -0
- data/docs/source/images/filters-range.png +0 -0
- data/docs/source/images/filters-sorted.png +0 -0
- data/docs/source/images/filters-wrapping-to-second-line-in-admin.png +0 -0
- data/docs/source/images/generic-product-template-images-no-options-selected.png +0 -0
- data/docs/source/images/generic-product-template-images-options-selected.png +0 -0
- data/docs/source/images/generic-template.png +0 -0
- data/docs/source/images/hosting.svg +0 -1
- data/docs/source/images/image-group-content-block-in-storefront.png +0 -0
- data/docs/source/images/images.svg +0 -1
- data/docs/source/images/import-export-screenshot.png +0 -0
- data/docs/source/images/invalid-display.png +0 -0
- data/docs/source/images/itcss.png +0 -0
- data/docs/source/images/kibana-dev-tools-console.png +0 -0
- data/docs/source/images/layout-content-admin-with-2-areas.png +0 -0
- data/docs/source/images/layout-content-admin-with-3-areas.png +0 -0
- data/docs/source/images/link-to-search-system-content.png +0 -0
- data/docs/source/images/logo.svg +0 -1
- data/docs/source/images/menu.svg +0 -2
- data/docs/source/images/mongo-replica-set.svg +0 -1
- data/docs/source/images/multi-column-hero-blocks.png +0 -0
- data/docs/source/images/option-selects-product-template-images-options-selected.png +0 -0
- data/docs/source/images/option-selects-template.png +0 -0
- data/docs/source/images/option-thumbnails-template.png +0 -0
- data/docs/source/images/order-item-total-price-diagram.png +0 -0
- data/docs/source/images/order-pricing-cart-example.png +0 -0
- data/docs/source/images/order-pricing-example-adjustments.png +0 -0
- data/docs/source/images/order-pricing-example-totals.png +0 -0
- data/docs/source/images/order-pricing-placed-order-example.png +0 -0
- data/docs/source/images/order-shipping-total-diagram.png +0 -0
- data/docs/source/images/order-show-with-multiple-tenders.png +0 -0
- data/docs/source/images/order-subtotal-price-diagram.png +0 -0
- data/docs/source/images/order-tax-total-diagram.png +0 -0
- data/docs/source/images/order-total-price-diagram.png +0 -0
- data/docs/source/images/order-total-value-diagram.png +0 -0
- data/docs/source/images/orders-dashboard-links.png +0 -0
- data/docs/source/images/oval.svg +0 -1
- data/docs/source/images/payment-icon-storefront-style-guide.png +0 -0
- data/docs/source/images/people-dashboard-links.png +0 -0
- data/docs/source/images/price-adjustments-diagram.png +0 -0
- data/docs/source/images/price-display-no-options.png +0 -0
- data/docs/source/images/price-display-options-selected.png +0 -0
- data/docs/source/images/pricing-calculators-diagram.png +0 -0
- data/docs/source/images/product-list-content-block-admin.png +0 -0
- data/docs/source/images/product-list-content-block-in-store-front.png +0 -0
- data/docs/source/images/promo-products-excluded-autocomplete-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-featured-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-recommendations-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-category-results-after.png +0 -0
- data/docs/source/images/promo-products-excluded-search-results-after.png +0 -0
- data/docs/source/images/promo-products-included-autocomplete-results-before.png +0 -0
- data/docs/source/images/promo-products-included-featured-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-recommendations-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-category-results-before.png +0 -0
- data/docs/source/images/promo-products-included-search-results-before.png +0 -0
- data/docs/source/images/rails-version-constraint.png +0 -0
- data/docs/source/images/re-enable-discount.png +0 -0
- data/docs/source/images/reading-data.svg +0 -1
- data/docs/source/images/readme-hero.png +0 -0
- data/docs/source/images/redesigned-customized-sort-for-search-results.png +0 -0
- data/docs/source/images/reviews-summary-above-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-below-product-name.png +0 -0
- data/docs/source/images/reviews-summary-below-share-buttons.png +0 -0
- data/docs/source/images/reviews-summary-removed.png +0 -0
- data/docs/source/images/rsa-fingerprint-for-stash.png +0 -0
- data/docs/source/images/ruby-version-constraint.png +0 -0
- data/docs/source/images/script-tag-added-through-admin.png +0 -0
- data/docs/source/images/search-analysis-admin-alternate-rendering.png +0 -0
- data/docs/source/images/search-analysis-admin.png +0 -0
- data/docs/source/images/search-quality-report.png +0 -0
- data/docs/source/images/search.svg +0 -1
- data/docs/source/images/searching-for-cart-system-content-in-admin.png +0 -0
- data/docs/source/images/searching-for-layout-system-content-in-admin.png +0 -0
- data/docs/source/images/seeded-admin.png +0 -0
- data/docs/source/images/seeds-from-plugins.png +0 -0
- data/docs/source/images/seo-metadata-automation-ui.png +0 -0
- data/docs/source/images/show-password-button.png +0 -0
- data/docs/source/images/storefront-autocomplete.png +0 -0
- data/docs/source/images/storefront-category-summary-content-block.png +0 -0
- data/docs/source/images/storefront-category.png +0 -0
- data/docs/source/images/storefront-product-after-overriding.png +0 -0
- data/docs/source/images/storefront-product-before-overriding.png +0 -0
- data/docs/source/images/storefront-product-browse-page.png +0 -0
- data/docs/source/images/storefront-product-recommendations.png +0 -0
- data/docs/source/images/storefront-product-show-page.png +0 -0
- data/docs/source/images/storefront-requests-and-search-requests.png +0 -0
- data/docs/source/images/storefront-search-request-handling.png +0 -0
- data/docs/source/images/storefront-search-response-creation.png +0 -0
- data/docs/source/images/storefront-search.png +0 -0
- data/docs/source/images/storefront-style-guides-navigation.png +0 -0
- data/docs/source/images/styles.css +0 -3
- data/docs/source/images/tax-categories-ui.png +0 -0
- data/docs/source/images/tax-rates-ui.png +0 -0
- data/docs/source/images/unpurchasable-product.png +0 -0
- data/docs/source/images/url-redirects-filtering.png +0 -0
- data/docs/source/images/utility-nav-area-in-admin.png +0 -0
- data/docs/source/images/utility-nav-area-in-storefront.png +0 -0
- data/docs/source/images/validation-message-in-storefront.png +0 -0
- data/docs/source/images/view-model-interface.png +0 -0
- data/docs/source/images/viewing-workarea-version-in-source.png +0 -0
- data/docs/source/images/workarea.svg +0 -1
- data/docs/source/images/worst-performing-searches-on-results-customization-page.png +0 -0
- data/docs/source/images/writing-data.svg +0 -1
- data/docs/source/index.html.erb +0 -166
- data/docs/source/javascripts/jquery.js +0 -2
- data/docs/source/javascripts/lunr.js +0 -7
- data/docs/source/javascripts/site.js +0 -299
- data/docs/source/javascripts/vendor/highlight.pack.js +0 -2
- data/docs/source/layouts/article.erb +0 -106
- data/docs/source/layouts/bare.erb +0 -46
- data/docs/source/layouts/layout.erb +0 -43
- data/docs/source/release-notes/workarea-3-0-0.html.md +0 -146
- data/docs/source/release-notes/workarea-3-0-1.html.md +0 -161
- data/docs/source/release-notes/workarea-3-0-10.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-11.html.md +0 -277
- data/docs/source/release-notes/workarea-3-0-12.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-13.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-14.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-0-16.html.md +0 -36
- data/docs/source/release-notes/workarea-3-0-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-0-18.html.md +0 -123
- data/docs/source/release-notes/workarea-3-0-19.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-2.html.md +0 -222
- data/docs/source/release-notes/workarea-3-0-20.html.md +0 -95
- data/docs/source/release-notes/workarea-3-0-21.html.md +0 -168
- data/docs/source/release-notes/workarea-3-0-22.html.md +0 -268
- data/docs/source/release-notes/workarea-3-0-23.html.md +0 -173
- data/docs/source/release-notes/workarea-3-0-24.html.md +0 -19
- data/docs/source/release-notes/workarea-3-0-25.html.md +0 -26
- data/docs/source/release-notes/workarea-3-0-26.html.md +0 -199
- data/docs/source/release-notes/workarea-3-0-27.html.md +0 -113
- data/docs/source/release-notes/workarea-3-0-28.html.md +0 -39
- data/docs/source/release-notes/workarea-3-0-29.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-3.html.md +0 -35
- data/docs/source/release-notes/workarea-3-0-30.html.md +0 -186
- data/docs/source/release-notes/workarea-3-0-31.html.md +0 -125
- data/docs/source/release-notes/workarea-3-0-32.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-33.html.md +0 -137
- data/docs/source/release-notes/workarea-3-0-34.html.md +0 -203
- data/docs/source/release-notes/workarea-3-0-35.html.md +0 -205
- data/docs/source/release-notes/workarea-3-0-36.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-37.html.md +0 -144
- data/docs/source/release-notes/workarea-3-0-38.html.md +0 -73
- data/docs/source/release-notes/workarea-3-0-39.html.md +0 -77
- data/docs/source/release-notes/workarea-3-0-4.html.md +0 -14
- data/docs/source/release-notes/workarea-3-0-40.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-41.html.md +0 -70
- data/docs/source/release-notes/workarea-3-0-42.html.md +0 -52
- data/docs/source/release-notes/workarea-3-0-43.html.md +0 -72
- data/docs/source/release-notes/workarea-3-0-44.html.md +0 -93
- data/docs/source/release-notes/workarea-3-0-45.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-46.html.md +0 -171
- data/docs/source/release-notes/workarea-3-0-47.html.md +0 -130
- data/docs/source/release-notes/workarea-3-0-48.html.md +0 -160
- data/docs/source/release-notes/workarea-3-0-49.html.md +0 -28
- data/docs/source/release-notes/workarea-3-0-5.html.md +0 -225
- data/docs/source/release-notes/workarea-3-0-50.html.md +0 -74
- data/docs/source/release-notes/workarea-3-0-51.html.md +0 -61
- data/docs/source/release-notes/workarea-3-0-52.html.md +0 -76
- data/docs/source/release-notes/workarea-3-0-53.html.md +0 -126
- data/docs/source/release-notes/workarea-3-0-54.html.md +0 -112
- data/docs/source/release-notes/workarea-3-0-55.html.md +0 -105
- data/docs/source/release-notes/workarea-3-0-56.html.md +0 -56
- data/docs/source/release-notes/workarea-3-0-57.html.md +0 -82
- data/docs/source/release-notes/workarea-3-0-58.html.md +0 -153
- data/docs/source/release-notes/workarea-3-0-59.html.md +0 -78
- data/docs/source/release-notes/workarea-3-0-6.html.md +0 -165
- data/docs/source/release-notes/workarea-3-0-60.html.md +0 -43
- data/docs/source/release-notes/workarea-3-0-61.html.md +0 -46
- data/docs/source/release-notes/workarea-3-0-62.html.md +0 -23
- data/docs/source/release-notes/workarea-3-0-63.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-64.html.md +0 -25
- data/docs/source/release-notes/workarea-3-0-65.html.md +0 -37
- data/docs/source/release-notes/workarea-3-0-7.html.md +0 -207
- data/docs/source/release-notes/workarea-3-0-8.html.md +0 -337
- data/docs/source/release-notes/workarea-3-0-9.html.md +0 -196
- data/docs/source/release-notes/workarea-3-1-0.html.md +0 -414
- data/docs/source/release-notes/workarea-3-1-1.html.md +0 -139
- data/docs/source/release-notes/workarea-3-1-10.html.md +0 -19
- data/docs/source/release-notes/workarea-3-1-11.html.md +0 -27
- data/docs/source/release-notes/workarea-3-1-12.html.md +0 -216
- data/docs/source/release-notes/workarea-3-1-13.html.md +0 -113
- data/docs/source/release-notes/workarea-3-1-14.html.md +0 -39
- data/docs/source/release-notes/workarea-3-1-15.html.md +0 -107
- data/docs/source/release-notes/workarea-3-1-16.html.md +0 -188
- data/docs/source/release-notes/workarea-3-1-17.html.md +0 -141
- data/docs/source/release-notes/workarea-3-1-18.html.md +0 -73
- data/docs/source/release-notes/workarea-3-1-19.html.md +0 -137
- data/docs/source/release-notes/workarea-3-1-2.html.md +0 -55
- data/docs/source/release-notes/workarea-3-1-20.html.md +0 -203
- data/docs/source/release-notes/workarea-3-1-21.html.md +0 -205
- data/docs/source/release-notes/workarea-3-1-22.html.md +0 -121
- data/docs/source/release-notes/workarea-3-1-23.html.md +0 -144
- data/docs/source/release-notes/workarea-3-1-24.html.md +0 -94
- data/docs/source/release-notes/workarea-3-1-25.html.md +0 -77
- data/docs/source/release-notes/workarea-3-1-26.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-27.html.md +0 -70
- data/docs/source/release-notes/workarea-3-1-28.html.md +0 -52
- data/docs/source/release-notes/workarea-3-1-29.html.md +0 -44
- data/docs/source/release-notes/workarea-3-1-3.html.md +0 -185
- data/docs/source/release-notes/workarea-3-1-30.html.md +0 -72
- data/docs/source/release-notes/workarea-3-1-31.html.md +0 -93
- data/docs/source/release-notes/workarea-3-1-32.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-33.html.md +0 -171
- data/docs/source/release-notes/workarea-3-1-34.html.md +0 -130
- data/docs/source/release-notes/workarea-3-1-35.html.md +0 -179
- data/docs/source/release-notes/workarea-3-1-36.html.md +0 -28
- data/docs/source/release-notes/workarea-3-1-37.html.md +0 -74
- data/docs/source/release-notes/workarea-3-1-38.html.md +0 -61
- data/docs/source/release-notes/workarea-3-1-39.html.md +0 -96
- data/docs/source/release-notes/workarea-3-1-4.html.md +0 -148
- data/docs/source/release-notes/workarea-3-1-40.html.md +0 -126
- data/docs/source/release-notes/workarea-3-1-41.html.md +0 -128
- data/docs/source/release-notes/workarea-3-1-42.html.md +0 -105
- data/docs/source/release-notes/workarea-3-1-43.html.md +0 -37
- data/docs/source/release-notes/workarea-3-1-44.html.md +0 -82
- data/docs/source/release-notes/workarea-3-1-45.html.md +0 -153
- data/docs/source/release-notes/workarea-3-1-46.html.md +0 -91
- data/docs/source/release-notes/workarea-3-1-47.html.md +0 -65
- data/docs/source/release-notes/workarea-3-1-48.html.md +0 -46
- data/docs/source/release-notes/workarea-3-1-49.html.md +0 -23
- data/docs/source/release-notes/workarea-3-1-5.html.md +0 -169
- data/docs/source/release-notes/workarea-3-1-50.html.md +0 -42
- data/docs/source/release-notes/workarea-3-1-51.html.md +0 -25
- data/docs/source/release-notes/workarea-3-1-52.html.md +0 -57
- data/docs/source/release-notes/workarea-3-1-6.html.md +0 -117
- data/docs/source/release-notes/workarea-3-1-7.html.md +0 -176
- data/docs/source/release-notes/workarea-3-1-8.html.md +0 -283
- data/docs/source/release-notes/workarea-3-1-9.html.md +0 -212
- data/docs/source/release-notes/workarea-3-2-0.html.md +0 -1705
- data/docs/source/release-notes/workarea-3-2-1.html.md +0 -216
- data/docs/source/release-notes/workarea-3-2-10.html.md +0 -237
- data/docs/source/release-notes/workarea-3-2-11.html.md +0 -121
- data/docs/source/release-notes/workarea-3-2-12.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-13.html.md +0 -138
- data/docs/source/release-notes/workarea-3-2-14.html.md +0 -77
- data/docs/source/release-notes/workarea-3-2-15.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-16.html.md +0 -111
- data/docs/source/release-notes/workarea-3-2-17.html.md +0 -52
- data/docs/source/release-notes/workarea-3-2-18.html.md +0 -44
- data/docs/source/release-notes/workarea-3-2-19.html.md +0 -72
- data/docs/source/release-notes/workarea-3-2-2.html.md +0 -145
- data/docs/source/release-notes/workarea-3-2-20.html.md +0 -93
- data/docs/source/release-notes/workarea-3-2-21.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-22.html.md +0 -154
- data/docs/source/release-notes/workarea-3-2-23.html.md +0 -130
- data/docs/source/release-notes/workarea-3-2-24.html.md +0 -200
- data/docs/source/release-notes/workarea-3-2-25.html.md +0 -28
- data/docs/source/release-notes/workarea-3-2-26.html.md +0 -94
- data/docs/source/release-notes/workarea-3-2-27.html.md +0 -61
- data/docs/source/release-notes/workarea-3-2-28.html.md +0 -96
- data/docs/source/release-notes/workarea-3-2-29.html.md +0 -126
- data/docs/source/release-notes/workarea-3-2-30.html.md +0 -112
- data/docs/source/release-notes/workarea-3-2-31.html.md +0 -105
- data/docs/source/release-notes/workarea-3-2-32.html.md +0 -56
- data/docs/source/release-notes/workarea-3-2-33.html.md +0 -82
- data/docs/source/release-notes/workarea-3-2-34.html.md +0 -153
- data/docs/source/release-notes/workarea-3-2-35.html.md +0 -91
- data/docs/source/release-notes/workarea-3-2-36.html.md +0 -118
- data/docs/source/release-notes/workarea-3-2-37.html.md +0 -46
- data/docs/source/release-notes/workarea-3-2-38.html.md +0 -23
- data/docs/source/release-notes/workarea-3-2-39.html.md +0 -42
- data/docs/source/release-notes/workarea-3-2-4.html.md +0 -109
- data/docs/source/release-notes/workarea-3-2-40.html.md +0 -25
- data/docs/source/release-notes/workarea-3-2-41.html.md +0 -90
- data/docs/source/release-notes/workarea-3-2-5.html.md +0 -186
- data/docs/source/release-notes/workarea-3-2-6.html.md +0 -173
- data/docs/source/release-notes/workarea-3-2-7.html.md +0 -89
- data/docs/source/release-notes/workarea-3-2-8.html.md +0 -137
- data/docs/source/release-notes/workarea-3-2-9.html.md +0 -219
- data/docs/source/release-notes/workarea-3-3-0.html.md +0 -1272
- data/docs/source/release-notes/workarea-3-3-1.html.md +0 -324
- data/docs/source/release-notes/workarea-3-3-10.html.md +0 -69
- data/docs/source/release-notes/workarea-3-3-11.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-12.html.md +0 -136
- data/docs/source/release-notes/workarea-3-3-13.html.md +0 -61
- data/docs/source/release-notes/workarea-3-3-14.html.md +0 -196
- data/docs/source/release-notes/workarea-3-3-15.html.md +0 -167
- data/docs/source/release-notes/workarea-3-3-16.html.md +0 -234
- data/docs/source/release-notes/workarea-3-3-17.html.md +0 -82
- data/docs/source/release-notes/workarea-3-3-18.html.md +0 -165
- data/docs/source/release-notes/workarea-3-3-19.html.md +0 -106
- data/docs/source/release-notes/workarea-3-3-2.html.md +0 -72
- data/docs/source/release-notes/workarea-3-3-20.html.md +0 -116
- data/docs/source/release-notes/workarea-3-3-21.html.md +0 -228
- data/docs/source/release-notes/workarea-3-3-22.html.md +0 -125
- data/docs/source/release-notes/workarea-3-3-23.html.md +0 -154
- data/docs/source/release-notes/workarea-3-3-24.html.md +0 -70
- data/docs/source/release-notes/workarea-3-3-25.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-26.html.md +0 -260
- data/docs/source/release-notes/workarea-3-3-27.html.md +0 -138
- data/docs/source/release-notes/workarea-3-3-28.html.md +0 -147
- data/docs/source/release-notes/workarea-3-3-29.html.md +0 -63
- data/docs/source/release-notes/workarea-3-3-3.html.md +0 -153
- data/docs/source/release-notes/workarea-3-3-30.html.md +0 -102
- data/docs/source/release-notes/workarea-3-3-31.html.md +0 -57
- data/docs/source/release-notes/workarea-3-3-32.html.md +0 -44
- data/docs/source/release-notes/workarea-3-3-33.html.md +0 -114
- data/docs/source/release-notes/workarea-3-3-34.html.md +0 -29
- data/docs/source/release-notes/workarea-3-3-4.html.md +0 -332
- data/docs/source/release-notes/workarea-3-3-5.html.md +0 -242
- data/docs/source/release-notes/workarea-3-3-6.html.md +0 -100
- data/docs/source/release-notes/workarea-3-3-7.html.md +0 -148
- data/docs/source/release-notes/workarea-3-3-8.html.md +0 -163
- data/docs/source/release-notes/workarea-3-3-9.html.md +0 -93
- data/docs/source/release-notes/workarea-3-4-0.html.md +0 -580
- data/docs/source/release-notes/workarea-3-4-1.html.md +0 -150
- data/docs/source/release-notes/workarea-3-4-10.html.md +0 -72
- data/docs/source/release-notes/workarea-3-4-11.html.md +0 -60
- data/docs/source/release-notes/workarea-3-4-12.html.md +0 -155
- data/docs/source/release-notes/workarea-3-4-15.html.md +0 -100
- data/docs/source/release-notes/workarea-3-4-16.html.md +0 -88
- data/docs/source/release-notes/workarea-3-4-2.html.md +0 -188
- data/docs/source/release-notes/workarea-3-4-3.html.md +0 -136
- data/docs/source/release-notes/workarea-3-4-4.html.md +0 -114
- data/docs/source/release-notes/workarea-3-4-5.html.md +0 -275
- data/docs/source/release-notes/workarea-3-4-6.html.md +0 -169
- data/docs/source/release-notes/workarea-3-4-7.html.md +0 -162
- data/docs/source/release-notes/workarea-3-4-8.html.md +0 -95
- data/docs/source/release-notes/workarea-3-4-9.html.md +0 -135
- data/docs/source/release-notes.html.md +0 -261
- data/docs/source/search.html.erb +0 -34
- data/docs/source/shared/_header.erb +0 -61
- data/docs/source/shared/_svgs.erb +0 -17
- data/docs/source/style_guide/index.html.erb +0 -382
- data/docs/source/stylesheets/_base.scss +0 -125
- data/docs/source/stylesheets/_components.scss +0 -669
- data/docs/source/stylesheets/_helpers.scss +0 -10
- data/docs/source/stylesheets/_opinions.scss +0 -42
- data/docs/source/stylesheets/_settings.scss +0 -56
- data/docs/source/stylesheets/_typography.scss +0 -119
- data/docs/source/stylesheets/site.css.scss +0 -14
- data/docs/source/stylesheets/vendor/_avalanche.scss +0 -328
- data/docs/source/stylesheets/vendor/_normalize.scss +0 -341
- data/docs/source/stylesheets/vendor/highlight/_tomorrow_night_blue.scss +0 -75
- data/docs/source/upgrade-guides/workarea-3-4-0.html.md +0 -152
- data/docs/source/upgrade-guides.html.md +0 -18
- data/docs/workarea_renderer.rb +0 -8
- data/docs/yarn.lock +0 -2522
@@ -1,2 +0,0 @@
|
|
1
|
-
/*! highlight.js v9.15.6 | BSD3 License | git.io/hljslicense */
|
2
|
-
!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var E=[],u=Object.keys,N={},g={},n=/^(no-?highlight|plain|text)$/i,R=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="</span>",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function d(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function p(e){return n.test(e)}function l(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function M(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),d(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(c){function s(e){return e&&e.source||e}function o(e,n){return new RegExp(s(e),"m"+(c.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){var r={},a=function(t,e){c.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");r[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof t.k?a("keyword",t.k):u(t.k).forEach(function(e){a(e,t.k[e])}),t.k=r}t.lR=o(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=o(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=o(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=o(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return(n="self"===e?t:e).v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return l(n,{v:null},e)})),n.cached_variants||n.eW&&[l(n)]||[n];var n})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?o(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i<e.length;i++){var c=r,o=s(e[i]);for(0<i&&(a+=n);0<o.length;){var u=t.exec(o);if(null==u){a+=o;break}a+=o.substring(0,u.index),o=o.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?a+="\\"+String(Number(u[1])+c):(a+=u[0],"("==u[0]&&r++)}}return a}(i,"|"),!0):{exec:function(){return null}}}}(c)}function C(e,n,o,t){function u(e,n,t,r){var a='<span class="'+(r?"":h.classPrefix);return(a+=e+'">')+n+(t?"":b)}function s(){g+=null!=E.sL?function(){var e="string"==typeof E.sL;if(e&&!N[E.sL])return _(R);var n=e?C(E.sL,R,!0,i[E.sL]):O(R,E.sL.length?E.sL:void 0);return 0<E.r&&(d+=n.r),e&&(i[E.sL]=n.top),u(n.language,n.value,!1,!0)}():function(){var e,n,t,r,a,i,c;if(!E.k)return _(R);for(r="",n=0,E.lR.lastIndex=0,t=E.lR.exec(R);t;)r+=_(R.substring(n,t.index)),a=E,i=t,c=f.cI?i[0].toLowerCase():i[0],(e=a.k.hasOwnProperty(c)&&a.k[c])?(d+=e[1],r+=u(e[0],_(t[0]))):r+=_(t[0]),n=E.lR.lastIndex,t=E.lR.exec(R);return r+_(R.substr(n))}(),R=""}function l(e){g+=e.cN?u(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function r(e,n){if(R+=e,null==n)return s(),0;var t=function(e,n){var t,r,a;for(t=0,r=n.c.length;t<r;t++)if(v(n.c[t].bR,e))return n.c[t].endSameAsBegin&&(n.c[t].eR=(a=n.c[t].bR.exec(e)[0],new RegExp(a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m"))),n.c[t]}(n,E);if(t)return t.skip?R+=n:(t.eB&&(R+=n),s(),t.rB||t.eB||(R=n)),l(t),t.rB?0:n.length;var r,a,i=function e(n,t){if(v(n.eR,t)){for(;n.endsParent&&n.parent;)n=n.parent;return n}if(n.eW)return e(n.parent,t)}(E,n);if(i){var c=E;for(c.skip?R+=n:(c.rE||c.eE||(R+=n),s(),c.eE&&(R=n));E.cN&&(g+=b),E.skip||E.sL||(d+=E.r),(E=E.parent)!==i.parent;);return i.starts&&(i.endSameAsBegin&&(i.starts.eR=i.eR),l(i.starts)),c.rE?0:n.length}if(r=n,a=E,!o&&v(a.iR,r))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"<unnamed>")+'"');return R+=n,n.length||1}var f=S(e);if(!f)throw new Error('Unknown language: "'+e+'"');m(f);var a,E=t||f,i={},g="";for(a=E;a!==f;a=a.parent)a.cN&&(g=u(a.cN,"",!0)+g);var R="",d=0;try{for(var c,p,M=0;E.t.lastIndex=M,c=E.t.exec(n);)p=r(n.substring(M,c.index),c[0]),M=c.index+p;for(r(n.substr(M)),a=E;a.parent;a=a.parent)a.cN&&(g+=b);return{r:d,value:g,language:e,top:E}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(S).filter(s).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function B(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"<br>":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function c(e){var n,t,r,a,i,c,o,u,s,l,f=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=R.exec(i))return S(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n<r;n++)if(p(a=i[n])||S(a))return a}(e);p(f)||(h.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,i=n.textContent,r=f?C(f,i,!0):O(i),(t=M(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function c(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function o(e){a+="<"+d(e)+E.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+_(e.value).replace('"',""")+'"'}).join("")+">"}function u(e){a+="</"+d(e)+">"}function s(e){("start"===e.event?o:u)(e.node)}for(;e.length||n.length;){var l=c();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=c())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(o)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,M(a),i)),r.value=B(r.value),e.innerHTML=r.value,e.className=(c=e.className,o=f,u=r.language,s=o?g[o]:u,l=[c.trim()],c.match(/\bhljs\b/)||l.push("hljs"),-1===c.indexOf(s)&&l.push(s),l.join(" ").trim()),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function o(){if(!o.called){o.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,c)}}function S(e){return e=(e||"").toLowerCase(),N[e]||N[g[e]]}function s(e){var n=S(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=B,a.highlightBlock=c,a.configure=function(e){h=l(h,e)},a.initHighlighting=o,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",o,!1),addEventListener("load",o,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){g[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=S,a.autoDetection=s,a.inherit=l,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("properties",function(r){var t="[ \\t\\f]*",e="("+t+"[:=]"+t+"|[ \\t\\f]+)",s="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",n="([^\\\\:= \\t\\f\\n]|\\\\.)+",a={e:e,r:0,starts:{cN:"string",e:/$/,r:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[r.C("^\\s*[!#]","$"),{b:s+e,rB:!0,c:[{cN:"attr",b:s,endsParent:!0,r:0}],starts:a},{b:n+e,rB:!0,r:0,c:[{cN:"meta",b:n,endsParent:!0,r:0}],starts:a},{cN:"attr",r:0,b:n+t+"$"}]}});hljs.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,{cN:"string",b:/'/,e:/'/},t]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("css",function(e){var c={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,c]}]}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d;var l=[{b:/^\s*=>/,starts:{e:"$",c:i.c=d}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(l).concat(d)}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:a+r+":"},{b:a+'"'+r+'":'},{b:a+"'"+r+"':"}]},c={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,{cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]}]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:c.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!"+e.UIR},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},e.HCM,{bK:b,k:{literal:b}},e.CNM,c]}});hljs.registerLanguage("xml",function(s){var e={eW:!0,i:/</,r:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},s.inherit(s.ASM,{i:null,cN:null,c:null,skip:!0}),s.inherit(s.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[e],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[e],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},e]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("dockerfile",function(e){return{aliases:["docker"],cI:!0,k:"from maintainer expose env arg user onbuild stopsignal",c:[e.HCM,e.ASM,e.QSM,e.NM,{bK:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{e:/[^\\]$/,sL:"bash"}}],i:"</"}});hljs.registerLanguage("haml",function(s){return{cI:!0,c:[{cN:"meta",b:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",r:10},s.C("^\\s*(!=#|=#|-#|/).*$",!1,{r:0}),{b:"^\\s*(-|=|!=)(?!#)",starts:{e:"\\n",sL:"ruby"}},{cN:"tag",b:"^\\s*%",c:[{cN:"selector-tag",b:"\\w+"},{cN:"selector-id",b:"#[\\w-]+"},{cN:"selector-class",b:"\\.[\\w-]+"},{b:"{\\s*",e:"\\s*}",c:[{b:":\\w+\\s*=>",e:",\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:":\\w+"},s.ASM,s.QSM,{b:"\\w+",r:0}]}]},{b:"\\(\\s*",e:"\\s*\\)",eE:!0,c:[{b:"\\w+\\s*=",e:"\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:"\\w+",r:0},s.ASM,s.QSM,{b:"\\w+",r:0}]}]}]},{b:"^\\s*[=~]\\s*"},{b:"#{",starts:{e:"}",sL:"ruby"}}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("scss",function(e){var t={cN:"variable",b:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={cN:"number",b:"#[0-9A-Fa-f]+"};e.CSSNM,e.QSM,e.ASM,e.CBCM;return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[t,i,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[t,e.QSM,e.ASM,i,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}});
|
@@ -1,106 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<html class='no-js'>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<title><%= current_page.data.title || "Workarea Documentation" %></title>
|
6
|
-
|
7
|
-
<%= favicon_tag 'images/favicon_180.png', rel: 'apple-touch-icon', type: 'image/x-icon', sizes: '180x180' %>
|
8
|
-
<%= favicon_tag 'images/favicon_32.png', sizes: '32x32' %>
|
9
|
-
<%= favicon_tag 'images/favicon_16.png', sizes: '16x16' %>
|
10
|
-
<meta content='#0060ff' name='msapplication-TileColor'>
|
11
|
-
<meta content='#0060ff' name='theme-color'>
|
12
|
-
<meta content='#0060ff' name='msapplication-navbar-color'>
|
13
|
-
<meta content='#0060ff' name='apple-mobile-web-app-status-bar-style'>
|
14
|
-
|
15
|
-
<meta name='description' content='<%= current_page.data.excerpt || 'Developer Documentation for the Workarea Commerce Platform' %>'>
|
16
|
-
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
17
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
18
|
-
<%= stylesheet_link_tag "site" %>
|
19
|
-
|
20
|
-
<% if build? %>
|
21
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-69425367-2"></script>
|
22
|
-
<script>
|
23
|
-
window.dataLayer = window.dataLayer || [];
|
24
|
-
function gtag(){dataLayer.push(arguments);}
|
25
|
-
gtag('js', new Date());
|
26
|
-
gtag('config', 'UA-69425367-2');
|
27
|
-
</script>
|
28
|
-
<% end %>
|
29
|
-
</head>
|
30
|
-
<body class='<%= body_classes('body--nude') %>'>
|
31
|
-
|
32
|
-
<%= partial 'shared/header' %>
|
33
|
-
|
34
|
-
<div class='view view--full'>
|
35
|
-
<div class='grid grid--huge'>
|
36
|
-
<div class='grid__cell 1/4--lap-and-up 1/5--widescreen'>
|
37
|
-
<aside class='aside'>
|
38
|
-
<% form_tag '/search.html', class: 'aside__search', method: 'get' do %>
|
39
|
-
<button type='submit' class='aside__search-button'>
|
40
|
-
<%= image_tag 'search.svg', class: 'aside__search-button-img' %>
|
41
|
-
</button>
|
42
|
-
<input type='search' name='q' placeholder='Search the Docs' class='aside__search-input' autocomplete='off' id='search'>
|
43
|
-
<% end %>
|
44
|
-
|
45
|
-
<nav class='nav'>
|
46
|
-
<button type='button' class='[ button button--full button--no-arrow ] hide-for-lap-and-up' data-open-nav=''>Table of Contents</button>
|
47
|
-
<ul class='nav__menu hide-for-pocket'>
|
48
|
-
<li class='parent'>
|
49
|
-
<span class='parent-label'>Recent Articles</span>
|
50
|
-
<ul>
|
51
|
-
<% recent_articles.each do |article| %>
|
52
|
-
<li class='child'>
|
53
|
-
<%= link_to article.data.title, article.url %>
|
54
|
-
</li>
|
55
|
-
<% end %>
|
56
|
-
</ul>
|
57
|
-
</li>
|
58
|
-
<%= tree_to_html(data.articles) %>
|
59
|
-
</ul>
|
60
|
-
</nav>
|
61
|
-
</aside>
|
62
|
-
</div>
|
63
|
-
|
64
|
-
<article class='grid__cell 3/4--lap-and-up 3/5--widescreen'>
|
65
|
-
<div class='article'>
|
66
|
-
<%= yield %>
|
67
|
-
</div>
|
68
|
-
|
69
|
-
<nav class='pagination'>
|
70
|
-
<ul class='grid'>
|
71
|
-
<li class='grid__cell 1/2'>
|
72
|
-
<% if previous_link(data.articles).present? %>
|
73
|
-
<p>⟵<%= previous_link(data.articles) %></p>
|
74
|
-
<% end %>
|
75
|
-
</li>
|
76
|
-
<li class='grid__cell 1/2'>
|
77
|
-
<% if next_link(data.articles).present? %>
|
78
|
-
<p class='align-right'><%= next_link(data.articles) %>⟶</p>
|
79
|
-
<% end %>
|
80
|
-
</li>
|
81
|
-
</ul>
|
82
|
-
</nav>
|
83
|
-
|
84
|
-
<section class='feedback'>
|
85
|
-
<h2>How'd We Do?</h2>
|
86
|
-
<p>If you found this article was missing information or wasn't quite what you were looking for, we are open to any suggestions or feedback on what we could do better.</p>
|
87
|
-
<a><%= link_to 'Help Us Out', config[:feedback_url] + current_page.url, class: 'button', target: '_blank' %></a>
|
88
|
-
</section>
|
89
|
-
</article>
|
90
|
-
|
91
|
-
<div class='grid__cell 1/5--widescreen'>
|
92
|
-
<div class='skip-to'>
|
93
|
-
<aside class='skip-to__menu'>
|
94
|
-
<ul><!-- Contents build via JavaScript --></ul>
|
95
|
-
</aside>
|
96
|
-
</div>
|
97
|
-
</div>
|
98
|
-
</div>
|
99
|
-
</div>
|
100
|
-
|
101
|
-
<%= javascript_include_tag "jquery" %>
|
102
|
-
<%= javascript_include_tag "vendor/highlight.pack" %>
|
103
|
-
<%= javascript_include_tag "lunr" %>
|
104
|
-
<%= javascript_include_tag "site" %>
|
105
|
-
</body>
|
106
|
-
</html>
|
@@ -1,46 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<html class='no-js'>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<title><%= current_page.data.title || "Workarea Documentation" %></title>
|
6
|
-
|
7
|
-
<%= favicon_tag 'images/favicon_180.png', rel: 'apple-touch-icon', type: 'image/x-icon', sizes: '180x180' %>
|
8
|
-
<%= favicon_tag 'images/favicon_32.png', sizes: '32x32' %>
|
9
|
-
<%= favicon_tag 'images/favicon_16.png', sizes: '16x16' %>
|
10
|
-
<meta content='#0060ff' name='msapplication-TileColor'>
|
11
|
-
<meta content='#0060ff' name='theme-color'>
|
12
|
-
<meta content='#0060ff' name='msapplication-navbar-color'>
|
13
|
-
<meta content='#0060ff' name='apple-mobile-web-app-status-bar-style'>
|
14
|
-
|
15
|
-
<meta name='description' content='<%= current_page.data.excerpt || 'Developer Documentation for the Workarea Commerce Platform' %>'>
|
16
|
-
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
17
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
18
|
-
<%= stylesheet_link_tag "site" %>
|
19
|
-
|
20
|
-
<% if build? %>
|
21
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-69425367-2"></script>
|
22
|
-
<script>
|
23
|
-
window.dataLayer = window.dataLayer || [];
|
24
|
-
function gtag(){dataLayer.push(arguments);}
|
25
|
-
gtag('js', new Date());
|
26
|
-
gtag('config', 'UA-69425367-2');
|
27
|
-
</script>
|
28
|
-
<% end %>
|
29
|
-
</head>
|
30
|
-
<body class='<%= body_classes('body--nude') %>'>
|
31
|
-
|
32
|
-
<%= partial 'shared/header' %>
|
33
|
-
|
34
|
-
<article class='view'>
|
35
|
-
<div class='article'>
|
36
|
-
<%= yield %>
|
37
|
-
</div>
|
38
|
-
</article>
|
39
|
-
|
40
|
-
<%= javascript_include_tag "jquery" %>
|
41
|
-
<%= javascript_include_tag "vendor/highlight.pack" %>
|
42
|
-
<%= javascript_include_tag "lunr" %>
|
43
|
-
<%= javascript_include_tag "site" %>
|
44
|
-
</body>
|
45
|
-
</html>
|
46
|
-
|
@@ -1,43 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<html class='no-js'>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<title><%= current_page.data.title || "Workarea Documentation" %></title>
|
6
|
-
|
7
|
-
<%= favicon_tag 'images/favicon_180.png', rel: 'apple-touch-icon', type: 'image/x-icon', sizes: '180x180' %>
|
8
|
-
<%= favicon_tag 'images/favicon_32.png', sizes: '32x32' %>
|
9
|
-
<%= favicon_tag 'images/favicon_16.png', sizes: '16x16' %>
|
10
|
-
<meta content='#0060ff' name='msapplication-TileColor'>
|
11
|
-
<meta content='#0060ff' name='theme-color'>
|
12
|
-
<meta content='#0060ff' name='msapplication-navbar-color'>
|
13
|
-
<meta content='#0060ff' name='apple-mobile-web-app-status-bar-style'>
|
14
|
-
|
15
|
-
<meta name='description' content='<%= current_page.data.excerpt || 'Developer Documentation for the Workarea Commerce Platform' %>'>
|
16
|
-
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
17
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
18
|
-
<%= stylesheet_link_tag "site" %>
|
19
|
-
|
20
|
-
<% if build? %>
|
21
|
-
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-69425367-2"></script>
|
22
|
-
<script>
|
23
|
-
window.dataLayer = window.dataLayer || [];
|
24
|
-
function gtag(){dataLayer.push(arguments);}
|
25
|
-
gtag('js', new Date());
|
26
|
-
gtag('config', 'UA-69425367-2');
|
27
|
-
</script>
|
28
|
-
<% end %>
|
29
|
-
</head>
|
30
|
-
<body class='<%= body_classes %>'>
|
31
|
-
|
32
|
-
<%= partial 'shared/header' %>
|
33
|
-
|
34
|
-
<div class='view'>
|
35
|
-
<%= yield %>
|
36
|
-
</div>
|
37
|
-
|
38
|
-
<%= javascript_include_tag "jquery" %>
|
39
|
-
<%= javascript_include_tag "vendor/highlight.pack" %>
|
40
|
-
<%= javascript_include_tag "lunr" %>
|
41
|
-
<%= javascript_include_tag "site" %>
|
42
|
-
</body>
|
43
|
-
</html>
|
@@ -1,146 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Workarea 3.0.0
|
3
|
-
excerpt: Workarea 3 renames the WebLinc software and its components to Workarea. The rename encompasses the core software and all plugins, including file and directory names, code constants, repository names, and gem names.
|
4
|
-
---
|
5
|
-
|
6
|
-
# Workarea 3.0.0
|
7
|
-
|
8
|
-
## Rename to Workarea
|
9
|
-
|
10
|
-
Workarea 3 renames the <cite>WebLinc</cite> software and its components to <cite>Workarea</cite>. The rename encompasses the core software and all plugins, including file and directory names, code constants, repository names, and gem names.
|
11
|
-
|
12
|
-
## Dependencies
|
13
|
-
|
14
|
-
### Elasticsearch
|
15
|
-
|
16
|
-
Workarea 3 requires [Elasticsearch](https://www.elastic.co/products/elasticsearch) [version 5.x](https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-5.0.html). You must update this dependency in all environments.
|
17
|
-
|
18
|
-
### Ruby
|
19
|
-
|
20
|
-
Workarea 3 requires [Ruby](https://www.ruby-lang.org/en/) [version 2.3.x](https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/). You must update this dependency in all environments.
|
21
|
-
|
22
|
-
### PhantomJS
|
23
|
-
|
24
|
-
Workarea 3 requires [PhantomJS](http://phantomjs.org/) [version 2.x](http://phantomjs.org/release-2.0.html). You must update this dependency in all test environments. Workarea 2.3.0 allowed use of PhantomJS 2.x, but this version is now a hard requirement in Workarea version 3.
|
25
|
-
|
26
|
-
## Extracted Plugins
|
27
|
-
|
28
|
-
Workarea v3 removes the following features.
|
29
|
-
|
30
|
-
- Product sharing
|
31
|
-
- Browsing by option (for example, a separate search result for each color of a product)
|
32
|
-
- Content search results
|
33
|
-
- Developer toolbar
|
34
|
-
- Product quickview
|
35
|
-
|
36
|
-
The features above have been extracted to the plugins below. These plugins are maintained by the WebLinc Product Team.
|
37
|
-
|
38
|
-
- [Workarea Share](https://stash.tools.weblinc.com/projects/WL/repos/workarea-share/browse)
|
39
|
-
- [Workarea Browse Option](https://stash.tools.weblinc.com/projects/WL/repos/workarea-browse-option/browse)
|
40
|
-
- [Workarea Content Search](https://stash.tools.weblinc.com/projects/WL/repos/workarea-content-search/browse)
|
41
|
-
- [Workarea Developer Toolbar](https://stash.tools.weblinc.com/projects/WL/repos/workarea-developer-toolbar/browse)
|
42
|
-
- [WebLinc Product Quickview](https://stash.tools.weblinc.com/projects/WL/repos/weblinc-product-quickview/browse)
|
43
|
-
|
44
|
-
## Testing
|
45
|
-
|
46
|
-
First introduced in WebLinc 2.3, <cite>Minitest</cite> is the standard test framework in Workarea 3.0. Using Minitest allows applications to run Workarea platform tests without copying them into the application, and it allows applications to decorate tests like other Ruby classes.
|
47
|
-
|
48
|
-
Workarea version 3 provides the following commands to run tests within an application.
|
49
|
-
|
50
|
-
- `bin/rails workarea:test:core` to run tests from <cite>workarea-core</cite> (with decorators)
|
51
|
-
- `bin/rails workarea:test:admin` to run tests from <cite>workarea-admin</cite> (with decorators)
|
52
|
-
- `bin/rails workarea:test:storefront` to run tests from <cite>workarea-storefront</cite> (with decorators)
|
53
|
-
- `bin/rails workarea:test` to run tests from <cite>workarea-core</cite>, <cite>workarea-admin</cite>, and <cite>workarea-storefront</cite> (with decorators)
|
54
|
-
- `bin/rails workarea:test:decorated` to run decorated tests only
|
55
|
-
|
56
|
-
Workarea 3 moves all _feature_ and _request_ tests from RSpec to Minitest (and renames them _system_ and _integration_ tests, respectively) and also moves a variety of other tests from RSpec to Minitest. Other tests remain in RSpec, however, these tests will be moved to Minitest in future minor releases.
|
57
|
-
|
58
|
-
Workarea 3 moves all RSpec dependencies into a separate [Workarea RSpec](https://stash.tools.weblinc.com/projects/WL/repos/workarea-rspec/browse) engine. This engine will provide continued support for RSpec testing during and after the migration of platform tests from RSpec to Minitest.
|
59
|
-
|
60
|
-
**Existing applications are not expected to migrate existing specs to Minitest. RSpec testing will continue to be supported indefinitely.** However, new applications should write Minitest tests exclusively, in order to benefit from test decoration.
|
61
|
-
|
62
|
-
Refer to [Testing](/articles/testing.html) for further coverage of testing in Workarea 3.
|
63
|
-
|
64
|
-
## Workers, Listeners & Publishers
|
65
|
-
|
66
|
-
Workarea version 3 removes WebLinc's system of listeners and publishers and adds Sidekiq extensions that provide the concept of a _callbacks worker_ in addition to other changes to the workers APIs.
|
67
|
-
|
68
|
-
The [Workers](/articles/workers.html) guide explains the version 3 workers APIs.
|
69
|
-
|
70
|
-
## Search
|
71
|
-
|
72
|
-
Workarea 3 makes a variety of changes to search, including those in the following list. The [Search](/articles/searching.html) guide explains the version 3 search APIs in greater detail.
|
73
|
-
|
74
|
-
- The `Elasticsearch::Persistence` library is removed in favor of using the Elasticsearch Ruby API directly
|
75
|
-
- `Weblinc::Search::Repository` and `Weblinc::Search::Mapper` are removed in favor of lighter abstractions
|
76
|
-
- `Elasticsearch::Document` and `Elasticsearch::Index` provide abstractions that more closely mimic the <abbr title="object document mapper">ODM</abbr> abstractions used for MongoDB
|
77
|
-
- The `Workarea::Search::Query` module and the construction of Elasticsearch searches has been redesigned to leverage developers' knowledge of Ruby modules and code re-use
|
78
|
-
- The list of indexes used is changed to reduce the number of Elasticsearch queries and to provide greater flexibility (for example, a single index is used to search for searches, products, categories, and pages in the storefront)
|
79
|
-
- Elasticsearch mappings are stored as configuration in `Workarea.config.elasticsearch_mappings`
|
80
|
-
- Personalized search is removed, and all search results pages are cached by URL
|
81
|
-
- Learning search is simplified and leverages data stored for analytics
|
82
|
-
|
83
|
-
## Shipping
|
84
|
-
|
85
|
-
Workarea v3 makes a variety of changes to shipping. Specifically, shipping rates are requested from an [ActiveShipping](http://www.rubydoc.info/gems/active_shipping/1.8.6) carrier, and Workarea provides a default carrier that mimics the previous shipping implementation. This change allows for easier extension of shipping functionality.
|
86
|
-
|
87
|
-
The [Shipping](/articles/shipping.html) guide explains the version 3 shipping APIs in more detail.
|
88
|
-
|
89
|
-
## Navigation
|
90
|
-
|
91
|
-
Workarea version 3 splits navigation into two separate concerns: taxonomy and navigation. <dfn>Taxons</dfn>, which compose the site's taxonomy, are used to organize [Navigables](/articles/navigable.html) and other nodes into a tree structure. This structure provides the hierarchy needed for secondary navigation such as breadcrumbs.
|
92
|
-
|
93
|
-
Meanwhile, the primary navigation is presented as a series of <dfn>menus</dfn>, each of which is [contentable](/articles/contentable.html) and [releasable](/articles/releasable.html), allowing for more flexible visual designs and management.
|
94
|
-
|
95
|
-
The [Navigation](/articles/navigation.html) guide explains the APIs concerning taxonomy and navigation.
|
96
|
-
|
97
|
-
## Content
|
98
|
-
|
99
|
-
Workarea version 3 iterates on <abbr title="content management system">CMS</abbr> functionality, primarily to allow faster creation of custom content block types. Block types are stored in memory and are created using a <abbr title="domain specific language">DSL</abbr>. Developers no longer need to implement the admin <abbr title="user interface">UI</abbr> for each block type. A block type is composed of <dfn>fields</dfn>, which are organized into <dfn>fieldsets</dfn>. A field defines the type of UI control that should be used to collect data, the default value of the field, and how the collected data should be typecast.
|
100
|
-
|
101
|
-
The [Content](/articles/content.html) guide explains the content APIs in more detail.
|
102
|
-
|
103
|
-
## Sample Data (Seeds)
|
104
|
-
|
105
|
-
Workarea 3 renames `Weblinc::SampleData` to `Workarea::Seeds` and removes the `weblinc:sample_data` Rake task in favor of Rails' own `db:seed` task. New Workarea 3 applications implement `db:seed` as follows:
|
106
|
-
|
107
|
-
```
|
108
|
-
# your_app/db/seeds.rb
|
109
|
-
require 'workarea/seeds'
|
110
|
-
Workarea::Seeds.run
|
111
|
-
```
|
112
|
-
|
113
|
-
Applications migrating to version 3 may want to copy this implementation.
|
114
|
-
|
115
|
-
Seed files live in the Rails `app` directory and are therefore required automatically and may be decorated like other Ruby classes. Furthermore, Workarea 3 stores the list of seeds to be run in the `Workarea.config.seeds` configuration to allow for easier extension.
|
116
|
-
|
117
|
-
## CSS Grid System
|
118
|
-
|
119
|
-
Workarea v3 uses the [Avalanche CSS grid system](http://colourgarden.net/avalanche/) ([source](https://github.com/colourgarden/avalanche)) for generic grid layout in the Admin and Storefront <abbr title="user interfaces">UIs</abbr>.
|
120
|
-
|
121
|
-
This grid system has configurable <dfn>settings</dfn>, which are configured differently for the [admin](https://stash.tools.weblinc.com/projects/WL/repos/workarea/browse/admin/app/assets/stylesheets/workarea/admin/settings/_grid.scss?at=refs%2Ftags%2Fv3.0.0) and [storefront](https://stash.tools.weblinc.com/projects/WL/repos/workarea/browse/storefront/app/assets/stylesheets/workarea/storefront/settings/_grid.scss?at=refs%2Ftags%2Fv3.0.0).
|
122
|
-
|
123
|
-
## Admin UI
|
124
|
-
|
125
|
-
Workarea version 3 redesigns the Admin UI, providing improved performance, discoverability, and extensibility. Some of the specific changes are summarized in the following list.
|
126
|
-
|
127
|
-
- <dfn>Search</dfn> is displayed more prominently and allows for searching by type of object (for example, searching for "products" allows direct navigation to the products index screen)
|
128
|
-
- A sitemap-like <dfn>primary navigation</dfn> organizes the Admin into sections, each with their own dashboard and subsections
|
129
|
-
- <dfn>Hierarchical navigation</dfn> is designed around the main heading of the page, with the link above the main heading going a level "up" the taxonomy, and links below the main heading going "down" a level deeper
|
130
|
-
- <dfn>Auxiliary navigation</dfn> that sometimes appears in the top right navigates between pages that are related but in a different parts of the taxonomy, such as returning to a product from its related inventory
|
131
|
-
- Redesigned <dfn>index pages</dfn> use a grid layout and allow selecting multiple products for <dfn>bulk actions</dfn>, such as edit and delete
|
132
|
-
- Objects such as products and categories now have <dfn>show pages</dfn> that present an overview of everything that can be managed for that object, as well as decomposing the administration of that object into smaller, more manageable pieces
|
133
|
-
- On show pages, <dfn>cards</dfn> bring forward comments and other features that were hidden behind context menus in previous versions
|
134
|
-
- The <dfn>timeline</dfn> for an object combines its history and upcoming changes into a single chronological view
|
135
|
-
- The <dfn>current release</dfn> is stored in session so that it "follows" the user through the Admin, while controls on most screens allow editing the current release before editing and before saving
|
136
|
-
- <dfn>Creation workflows</dfn> provide step-by-step interfaces to create and publish objects such as products, categories, and discounts that require more than a simple form to create a functioning whole (for example, _products_ need _variants_ that need _prices_)
|
137
|
-
- The <dfn>content editing</dfn> UI is redesigned, providing more context while editing, as well as improved previewing
|
138
|
-
- More useful data is present on <dfn>dashboards</dfn>, and <dfn>insights</dfn> are also available for categories, products, people, and search to help retailers make decisions
|
139
|
-
|
140
|
-
### Admin Toolbar
|
141
|
-
|
142
|
-
The admin toolbar that displays for administrators when browsing the Storefront is updated to match the Admin, providing the full Admin search and navigation directly within the Storefront. Administrators can navigate easily between Admin and Storefront views of the same object.
|
143
|
-
|
144
|
-
### Internationalization
|
145
|
-
|
146
|
-
In addition to being redesigned, the Admin UI has been internationalized, allowing for translation into different and multiple locales. The Storefront and Admin UIs are now both internationalized.
|
@@ -1,161 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Workarea 3.0.1
|
3
|
-
excerpt: To ensure tests function correctly, Workarea must load before other gems when the application boots. The app template included in Workarea 3.0.1 has been updated to ensure this change is present in new applications. However, this change must be applie
|
4
|
-
---
|
5
|
-
|
6
|
-
# Workarea 3.0.1
|
7
|
-
|
8
|
-
## Loads Workarea Before Other Gems
|
9
|
-
|
10
|
-
To ensure tests function correctly, Workarea must load before other gems when the application boots. The app template included in Workarea 3.0.1 has been updated to ensure this change is present in new applications. However, this change must be applied manually to applications that were created using an earlier version of the app template. The code example below shows the correct loading order.
|
11
|
-
|
12
|
-
```
|
13
|
-
# /config/application.rb
|
14
|
-
|
15
|
-
# ...
|
16
|
-
|
17
|
-
# Workarea must be required before other gems to ensure control over Rails.env
|
18
|
-
# for running tests
|
19
|
-
require 'workarea/core'
|
20
|
-
require 'workarea/admin'
|
21
|
-
require 'workarea/storefront'
|
22
|
-
|
23
|
-
Bundler.require(*Rails.groups)
|
24
|
-
|
25
|
-
# ...
|
26
|
-
```
|
27
|
-
|
28
|
-
## Redesigns Z-Index Management
|
29
|
-
|
30
|
-
Workarea 3.0.1 adds stylesheets to the _settings_ layer in the Admin and Storefront which establish a new convention for specifying z-index values throughout both UIs. The pattern is described in the article [Sassy Z-Index Management For Complex Layouts](https://www.smashingmagazine.com/2014/06/sassy-z-index-management-for-complex-layouts/) and uses Sass lists to manage z-indexes.
|
31
|
-
|
32
|
-
For example, in the Storefront, to ensure the `page-header` block has a higher z-index than the `page-content` block, `page-header` is ordered after `page-content` in the `$page-container` list. The styles for `page-header` then use Sass's `index` function to find the position of `page-header` within the `$page-container` list and use that number as the z-index value.
|
33
|
-
|
34
|
-
```
|
35
|
-
// workarea-storefront/app/assets/stylesheets/workarea/storefront/settings/_z_indexes.scss
|
36
|
-
|
37
|
-
// ...
|
38
|
-
|
39
|
-
$page-container: (
|
40
|
-
page-content,
|
41
|
-
page-header
|
42
|
-
) !default;
|
43
|
-
|
44
|
-
// workarea-storefront/app/assets/stylesheets/workarea/storefront/components/_page_header.scss
|
45
|
-
|
46
|
-
// ...
|
47
|
-
|
48
|
-
.page-header {
|
49
|
-
position: relative;
|
50
|
-
z-index: index($page-container, page-header);
|
51
|
-
// ...
|
52
|
-
}
|
53
|
-
|
54
|
-
// ...
|
55
|
-
```
|
56
|
-
|
57
|
-
Within each UI, there is one list per stacking context. Applications should use and maintain these lists to manage z-index values.
|
58
|
-
|
59
|
-
The change adds a _settings/\_z\_indexes.scss_ settings stylesheet to the Admin and Storefront and modifies the _application.scss.erb_ stylesheet manifest in each engine to import the new stylesheets. If either manifest in your application has been overridden, you'll need to edit the manifest to import the new settings.
|
60
|
-
|
61
|
-
Furthermore, various stylesheets are modified to ensure that each z-index value is specified using the `index` function to look up the position of a block within a list. Review the [merge commit](https://stash.tools.weblinc.com/projects/WL/repos/workarea/commits/0705533c45887b9cab65c416effdf0fb138eda51) to see the complete list of affected files and update any overridden assets in your application accordingly.
|
62
|
-
|
63
|
-
## Moves Dialog and Loading Assets out of Core
|
64
|
-
|
65
|
-
Since Workarea 3.0.0, dialogs are no longer used in the Admin and the `WORKAREA.loading` JavaScript module is used exclusively in the Storefront. Workarea 3.0.1 therefore moves dialog and loading assets out of Core since the code is no longer shared across UIs. The only exception is the _loading.jst.ejs_ JavaScript template, which is duplicated within Admin and Storefront as of 3.0.1. The following list summarizes the relevant code changes.
|
66
|
-
|
67
|
-
- Move the _modules/dialog_, _modules/dialog\_buttons_, _modules/dialog\_forms_, and _modules/dialog\_close\_buttons_ JavaScript module files from Core to Storefront
|
68
|
-
- Remove the above modules from the Admin _application.js.erb_ manifest and update their paths in the Storefront manifest
|
69
|
-
- Additionally remove _jquery-ui/widgets/dialog_ from the Admin manifest
|
70
|
-
- Remove the _jquery\_ui/admin/\_ui\_dialog.scss_ stylesheet from the Admin
|
71
|
-
- Remove the _style\_guides/components/\_ui\_dialog.html.haml_ style guide partial from the Admin
|
72
|
-
- Remove all styles scoped to `.ui-dialog` within the _jquery\_select2/admin/theme/\_workarea.scss_, _workarea/admin/components/\_style\_guide.scss_, and _workarea/admin/components/\_view.scss_ Admin stylesheets
|
73
|
-
- Remove dialog Sass variables from _workarea/admin/settings/\_global.scss_ in the Admin
|
74
|
-
- Move the `WORKAREA.config.dialog` and `WORKAREA.config.loading` assignments from _workarea/core/config.js_ in Core to _workarea/storefront/config.js.erb_ in Storefront
|
75
|
-
- Copy the _workarea/admin/templates/loading.jst.ejs_ JavaScript template to Admin and Storefront, then remove it from Core
|
76
|
-
- Update the path to the above template within the _workarea/storefront/config.js.erb_ Storefront file
|
77
|
-
- Update the path to the above template within the _workarea/admin/modules/add\_content\_block\_buttons.js_ and _workarea/admin/modules/content\_blocks.js_ Admin files
|
78
|
-
|
79
|
-
Review the [merge commit](https://stash.tools.weblinc.com/projects/WL/repos/workarea/commits/df92f6c3524bf1cd91ad46b5564572a175ab7590) for a diff of the above changes.
|
80
|
-
|
81
|
-
## Adds Product Entries Query
|
82
|
-
|
83
|
-
Workarea 3.0.1 adds a new query class, `Workarea::Search::ProductEntries`, which creates a collection of search models (to be indexed into Elasticsearch) from the given collection of product models. By default, initializing a `ProductEntries` collection creates a `Search::Storefront::Product` to represent each of the given products. However, plugins and applications may need to modify this logic.
|
84
|
-
|
85
|
-
For example, the <cite>Workarea Package Products</cite> plugin conditionally represents a given product using its own `Search::Storefront::PackageProduct` model instead of the default `Search::Storefront::Product` search model.
|
86
|
-
|
87
|
-
Furthermore, the <cite>Workarea Browse Option</cite> plugin extends the `ProductEntries` collection to potentially contain multiple search documents for each product (one per a given product option, such as color or size). Each product in the collection is represented by one or more instances of `Search::Storefront::ProductOption`, a search model provided by the plugin.
|
88
|
-
|
89
|
-
Plugins and applications can extend this class as needed to ensure products are represented appropriately in Elasticsearch.
|
90
|
-
|
91
|
-
## Adds Credit Card Icons Helper Method
|
92
|
-
|
93
|
-
Workarea 3.0.1 adds the `Workarea::Storefront::CreditCardsHelper#all_payment_icons` helper method, which returns the markup needed to display a collection of icons representing the accepted credit card types, as declared in `Workarea.config.credit_card_issuers`.
|
94
|
-
|
95
|
-
The output of this helper replaces the `workarea.storefront.checkouts.credit_card_types` translation within the _workarea/storefront/checkouts/payment.html.haml_ view in the Storefront. If your application has overridden this view, you must apply this change manually.
|
96
|
-
|
97
|
-
The following image shows the icons displayed in the Storefront.
|
98
|
-
|
99
|
-
![credit card icons](images/credit-card-icons.png)
|
100
|
-
|
101
|
-
## Adds HTML Data Attributes Option for Content Fields
|
102
|
-
|
103
|
-
Workarea 3.0.1 adds an `html_data_attributes` option to [content fields](content.html#field). Content field options are declared using the [content block DSL](content.html#content-block-dsl). The `html_data_attributes` option outputs the given data attributes on the _property_ component for that field within the Admin UI.
|
104
|
-
|
105
|
-
The following example extends the _Text_ block type to include the `data-baz="qux"` and `data-foo="bar"` data attributes on the _Text_ field's property component in the Admin.
|
106
|
-
|
107
|
-
```
|
108
|
-
# Within any initializer, such as /config/initializers/workarea.rb
|
109
|
-
|
110
|
-
Workarea::Content.define_block_types do
|
111
|
-
block_type 'Text' do
|
112
|
-
field 'Text', :text, html_data_attributes: { foo: 'bar', baz: 'qux' }
|
113
|
-
end
|
114
|
-
end
|
115
|
-
```
|
116
|
-
|
117
|
-
```
|
118
|
-
<!-- HTML ouput in the Admin UI -->
|
119
|
-
|
120
|
-
<div class="property" data-baz="qux" data-foo="bar">
|
121
|
-
<label class="property__name" for="text_content_block">Text</label>
|
122
|
-
<div class="wysiwyg" data-wysiwyg>
|
123
|
-
<!-- ... -->
|
124
|
-
</div>
|
125
|
-
</div>
|
126
|
-
```
|
127
|
-
|
128
|
-
## Adds Color Picker Component to Admin (for Color Fields)
|
129
|
-
|
130
|
-
Workarea 3.0.1 adds a _color-picker_ component to the Admin and applies the component to _color_ [content fields](content.html#field) (`Workarea::Content::Fields::Color`).
|
131
|
-
|
132
|
-
The image below shows the style guide for the new component.
|
133
|
-
|
134
|
-
![color picker component Admin style guide](images/color-picker-component-admin-style-guide.png)
|
135
|
-
|
136
|
-
And the following image shows the component in use within a content editing screen.
|
137
|
-
|
138
|
-
![color picker component on content editing screen](images/color-picker-component-on-content-editing-screen.png)
|
139
|
-
|
140
|
-
The following list summarizes the code changes within the Admin.
|
141
|
-
|
142
|
-
- Adds _components/\_color\_picker.scss_ component stylesheet
|
143
|
-
- Modifies _application.scss.erb_ manifest to import _\_color\_picker.scss_
|
144
|
-
- Adds _style\_guides/components/\_color\_picker\_field.html.haml_ style guide partial
|
145
|
-
- Modifies _content\_blocks/\_color.html.haml_ partial to apply the _color-picker_ component to _color_ fields
|
146
|
-
|
147
|
-
If any of the above stylesheets or partials have been overridden in the application you're upgrading, you'll need to apply the changes manually within your copy of the files.
|
148
|
-
|
149
|
-
## Adds Style Guides Navigation
|
150
|
-
|
151
|
-
Workarea 3.0.1 adds navigation to the style guides indexes for the Admin and Storefront.
|
152
|
-
|
153
|
-
The image below shows the navigation within the Admin.
|
154
|
-
|
155
|
-
![Admin style guides navigation](images/admin-style-guides-navigation.png)
|
156
|
-
|
157
|
-
And the following image shows the navigation within the Storefront.
|
158
|
-
|
159
|
-
![Storefront style guides navigation](images/storefront-style-guides-navigation.png)
|
160
|
-
|
161
|
-
|
@@ -1,39 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Workarea 3.0.10
|
3
|
-
excerpt: #2687, #2694
|
4
|
-
---
|
5
|
-
|
6
|
-
# Workarea 3.0.10
|
7
|
-
|
8
|
-
## Fixes Test Runners on Rails 5.0.5
|
9
|
-
|
10
|
-
[#2687](https://stash.tools.weblinc.com/projects/WL/repos/workarea/pull-requests/2687/overview), [#2694](https://stash.tools.weblinc.com/projects/WL/repos/workarea/pull-requests/2694/overview)
|
11
|
-
|
12
|
-
Rails 5.0.5 includes [significant changes](https://github.com/rails/rails/pull/29572) to the Rails test runner, which break the [test runners](testing.html#listing-test-runners) used by Workarea applications. Workarea 3.0.10 makes the following changes to ensure continued functionality of the test runners after upgrading to Rails 5.0.5.
|
13
|
-
|
14
|
-
- Changes `Minitest.rake_run` to `Rails::TestUnit::Runner.rake_run` throughout _workarea-core/lib/tasks/tests.rake_
|
15
|
-
- Removes _workarea-core/lib/minitest/workarea\_plugin.rb_ and _workarea-core/lib/workarea/ext/rails/test\_requirer.rb_
|
16
|
-
- Adds `Workarea::DecorationReporter` at _testing/lib/workarea/testing/decoration\_reporter.rb_, which implements `format_rerun_snippet` on `Rails::TestUnitReporter`
|
17
|
-
|
18
|
-
## Fixes Storefront Cancelation Email to Correctly List Canceled Items
|
19
|
-
|
20
|
-
[#2689](https://stash.tools.weblinc.com/projects/WL/repos/workarea/pull-requests/2689/overview)
|
21
|
-
|
22
|
-
Workarea 3.0.10 fixes the Storefront cancelation email to correctly list canceled items.
|
23
|
-
|
24
|
-
The change modifies `Workarea::Fulfillment#cancel_items` in Core.
|
25
|
-
|
26
|
-
The PR also modifies the following Storefront mailers.
|
27
|
-
|
28
|
-
- _workarea/storefront/fulfillment\_mailer/canceled.html.haml_
|
29
|
-
- _workarea/storefront/fulfillment\_mailer/canceled.text.erb_
|
30
|
-
|
31
|
-
Finally, the PR updates `test_canceled_order_updates_the_fulfillment_status_of_the_order` in `Workarea::Storefront::FulfillmentSystemTest`
|
32
|
-
|
33
|
-
## Blocks Malicious Credit Card Requests
|
34
|
-
|
35
|
-
[#2673](https://stash.tools.weblinc.com/projects/WL/repos/workarea/pull-requests/2673/overview)
|
36
|
-
|
37
|
-
Workarea 3.0.10 modifies the [Rack::Attack](https://rubygems.org/gems/rack-attack/versions/5.0.1) ([docs](http://www.rubydoc.info/gems/rack-attack/5.0.1)) initializer, _workarea-core/config/initializers/13\_rack\_attack.rb_, creating a new blocklist intended to protect against malicious credit card requests. These requests, which place orders and save credit cards in order to test credit card lists, strain infrastructure and burden the retailer with credit card fees.
|
38
|
-
|
39
|
-
|