@shopify/app-bridge
Version:
**Shopify is doubling our engineering staff in 2021! [Join our team and work on libraries like this one.](https://smrtr.io/5GGrc)**
220 lines (219 loc) • 9.76 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.create = exports.ResourcePicker = exports.update = exports.close = exports.cancel = exports.open = exports.select = exports.ActionVerb = exports.ResourceType = exports.ProductStatus = exports.ProductVariantInventoryManagement = exports.ProductVariantInventoryPolicy = exports.WeightUnit = exports.FulfillmentServiceType = exports.CollectionSortOrder = exports.Action = void 0;
var helper_1 = require("../helper");
var types_1 = require("../types");
var Action;
(function (Action) {
Action["OPEN"] = "APP::RESOURCE_PICKER::OPEN";
Action["SELECT"] = "APP::RESOURCE_PICKER::SELECT";
// Deprecated in 0.5.0
Action["CLOSE"] = "APP::RESOURCE_PICKER::CLOSE";
Action["UPDATE"] = "APP::RESOURCE_PICKER::UPDATE";
Action["CANCEL"] = "APP::RESOURCE_PICKER::CANCEL";
})(Action = exports.Action || (exports.Action = {}));
var CollectionSortOrder;
(function (CollectionSortOrder) {
CollectionSortOrder["Manual"] = "MANUAL";
CollectionSortOrder["BestSelling"] = "BEST_SELLING";
CollectionSortOrder["AlphaAsc"] = "ALPHA_ASC";
CollectionSortOrder["AlphaDesc"] = "ALPHA_DESC";
CollectionSortOrder["PriceDesc"] = "PRICE_DESC";
CollectionSortOrder["PriceAsc"] = "PRICE_ASC";
CollectionSortOrder["CreatedDesc"] = "CREATED_DESC";
CollectionSortOrder["Created"] = "CREATED";
})(CollectionSortOrder = exports.CollectionSortOrder || (exports.CollectionSortOrder = {}));
var FulfillmentServiceType;
(function (FulfillmentServiceType) {
FulfillmentServiceType["GiftCard"] = "GIFT_CARD";
FulfillmentServiceType["Manual"] = "MANUAL";
FulfillmentServiceType["ThirdParty"] = "THIRD_PARTY";
})(FulfillmentServiceType = exports.FulfillmentServiceType || (exports.FulfillmentServiceType = {}));
var WeightUnit;
(function (WeightUnit) {
WeightUnit["Kilograms"] = "KILOGRAMS";
WeightUnit["Grams"] = "GRAMS";
WeightUnit["Pounds"] = "POUNDS";
WeightUnit["Ounces"] = "OUNCES";
})(WeightUnit = exports.WeightUnit || (exports.WeightUnit = {}));
var ProductVariantInventoryPolicy;
(function (ProductVariantInventoryPolicy) {
ProductVariantInventoryPolicy["Deny"] = "DENY";
ProductVariantInventoryPolicy["Continue"] = "CONTINUE";
})(ProductVariantInventoryPolicy = exports.ProductVariantInventoryPolicy || (exports.ProductVariantInventoryPolicy = {}));
var ProductVariantInventoryManagement;
(function (ProductVariantInventoryManagement) {
ProductVariantInventoryManagement["Shopify"] = "SHOPIFY";
ProductVariantInventoryManagement["NotManaged"] = "NOT_MANAGED";
ProductVariantInventoryManagement["FulfillmentService"] = "FULFILLMENT_SERVICE";
})(ProductVariantInventoryManagement = exports.ProductVariantInventoryManagement || (exports.ProductVariantInventoryManagement = {}));
var ProductStatus;
(function (ProductStatus) {
ProductStatus["Active"] = "ACTIVE";
ProductStatus["Archived"] = "ARCHIVED";
ProductStatus["Draft"] = "DRAFT";
})(ProductStatus = exports.ProductStatus || (exports.ProductStatus = {}));
var ResourceType;
(function (ResourceType) {
ResourceType["Product"] = "product";
ResourceType["ProductVariant"] = "variant";
ResourceType["Collection"] = "collection";
})(ResourceType = exports.ResourceType || (exports.ResourceType = {}));
var ActionVerb;
(function (ActionVerb) {
ActionVerb["Add"] = "add";
ActionVerb["Select"] = "select";
})(ActionVerb = exports.ActionVerb || (exports.ActionVerb = {}));
function select(payload) {
return helper_1.actionWrapper({
payload: payload,
group: types_1.Group.ResourcePicker,
type: Action.SELECT,
});
}
exports.select = select;
function open(payload) {
return helper_1.actionWrapper({
payload: payload,
group: types_1.Group.ResourcePicker,
type: Action.OPEN,
});
}
exports.open = open;
function cancel(payload) {
return helper_1.actionWrapper({
payload: payload,
group: types_1.Group.ResourcePicker,
type: Action.CANCEL,
});
}
exports.cancel = cancel;
function close(payload) {
return helper_1.actionWrapper({
payload: payload,
group: types_1.Group.ResourcePicker,
type: Action.CANCEL,
});
}
exports.close = close;
function update(payload) {
return helper_1.actionWrapper({
payload: payload,
group: types_1.Group.ResourcePicker,
type: Action.UPDATE,
});
}
exports.update = update;
var ResourcePicker = /** @class */ (function (_super) {
__extends(ResourcePicker, _super);
function ResourcePicker(app, options, resourceType) {
var _this = _super.call(this, app, types_1.Group.ResourcePicker, types_1.Group.ResourcePicker) || this;
_this.initialSelectionIds = [];
_this.selection = [];
_this.resourceType = resourceType;
_this.set(options, false);
return _this;
}
Object.defineProperty(ResourcePicker.prototype, "payload", {
get: function () {
return __assign(__assign({}, this.options), { id: this.id, resourceType: this.resourceType });
},
enumerable: false,
configurable: true
});
Object.defineProperty(ResourcePicker.prototype, "options", {
get: function () {
var options = {
initialQuery: this.initialQuery,
selectMultiple: this.selectMultiple,
initialSelectionIds: this.initialSelectionIds,
showHidden: this.showHidden,
actionVerb: this.actionVerb,
};
if (this.resourceType === ResourceType.Product) {
var productOptions = __assign(__assign({}, options), { showVariants: this.showVariants, showDraft: this.showDraft, showArchived: this.showArchived, showDraftBadge: this.showDraftBadge, showArchivedBadge: this.showArchivedBadge });
return productOptions;
}
return options;
},
enumerable: false,
configurable: true
});
ResourcePicker.prototype.set = function (options, shouldUpdate) {
if (shouldUpdate === void 0) { shouldUpdate = true; }
var mergedOptions = helper_1.getMergedProps(this.options, options);
var initialQuery = mergedOptions.initialQuery, _a = mergedOptions.initialSelectionIds, initialSelectionIds = _a === void 0 ? [] : _a, _b = mergedOptions.showHidden, showHidden = _b === void 0 ? true : _b, _c = mergedOptions.showVariants, showVariants = _c === void 0 ? true : _c, _d = mergedOptions.showDraft, showDraft = _d === void 0 ? true : _d, _e = mergedOptions.showArchived, showArchived = _e === void 0 ? true : _e, _f = mergedOptions.showDraftBadge, showDraftBadge = _f === void 0 ? false : _f, _g = mergedOptions.showArchivedBadge, showArchivedBadge = _g === void 0 ? false : _g, _h = mergedOptions.selectMultiple, selectMultiple = _h === void 0 ? true : _h, _j = mergedOptions.actionVerb, actionVerb = _j === void 0 ? ActionVerb.Add : _j;
this.initialQuery = initialQuery;
this.initialSelectionIds = initialSelectionIds;
this.showHidden = showHidden;
this.showVariants = showVariants;
this.showDraft = showDraft;
this.showArchived = showArchived;
this.showDraftBadge = showDraftBadge;
this.showArchivedBadge = showArchivedBadge;
this.selectMultiple = selectMultiple;
this.actionVerb = actionVerb;
if (shouldUpdate) {
this.update();
}
return this;
};
ResourcePicker.prototype.dispatch = function (action, selection) {
if (action === Action.OPEN) {
this.open();
}
else if (action === Action.UPDATE) {
this.update();
}
else if (action === Action.CLOSE || action === Action.CANCEL) {
this.cancel();
}
else if (action === Action.SELECT) {
this.selection = selection;
this.app.dispatch(select({ id: this.id, selection: this.selection }));
}
return this;
};
ResourcePicker.prototype.update = function () {
this.app.dispatch(update(this.payload));
};
ResourcePicker.prototype.open = function () {
this.app.dispatch(open(this.payload));
};
ResourcePicker.prototype.cancel = function () {
this.app.dispatch(cancel({ id: this.id }));
};
ResourcePicker.prototype.close = function () {
this.cancel();
};
return ResourcePicker;
}(helper_1.ActionSet));
exports.ResourcePicker = ResourcePicker;
exports.create = function (app, baseOptions) {
var resourceType = baseOptions.resourceType, _a = baseOptions.options, options = _a === void 0 ? {} : _a;
return new ResourcePicker(app, options, resourceType);
};