devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
93 lines (90 loc) • 3.31 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/collection/m_collection_widget.async.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _guid = _interopRequireDefault(require("../../../core/guid"));
var _deferred = require("../../../core/utils/deferred");
var _m_collection_widget = _interopRequireDefault(require("../../ui/collection/m_collection_widget.edit"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
class CollectionWidgetAsync extends _m_collection_widget.default {
_initMarkup() {
this._asyncTemplateItemsMap = {};
super._initMarkup()
}
_render() {
super._render();
this._planPostRenderActions()
}
_renderItemContent(args) {
const renderContentDeferred = (0, _deferred.Deferred)();
const itemDeferred = (0, _deferred.Deferred)();
const uniqueKey = `dx${new _guid.default}`;
this._asyncTemplateItemsMap[uniqueKey] = itemDeferred;
const $itemContent = super._renderItemContent(_extends({}, args, {
uniqueKey: uniqueKey
}));
itemDeferred.done((() => {
renderContentDeferred.resolve($itemContent)
}));
return renderContentDeferred.promise()
}
_onItemTemplateRendered(itemTemplate, renderArgs) {
return () => {
const {
uniqueKey: uniqueKey
} = renderArgs;
if (uniqueKey) {
var _this$_asyncTemplateI;
null === (_this$_asyncTemplateI = this._asyncTemplateItemsMap[uniqueKey]) || void 0 === _this$_asyncTemplateI || _this$_asyncTemplateI.resolve()
}
}
}
_postProcessRenderItems() {}
_planPostRenderActions() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key]
}
const d = (0, _deferred.Deferred)();
const asyncTemplateItems = Object.values(this._asyncTemplateItemsMap);
_deferred.when.apply(this, asyncTemplateItems).done((() => {
this._postProcessRenderItems(...args);
d.resolve().done((() => {
this._asyncTemplateItemsMap = {}
}))
}));
return d.promise()
}
_clean() {
super._clean();
const asyncTemplateItems = Object.values(this._asyncTemplateItemsMap);
asyncTemplateItems.forEach((item => {
item.reject()
}));
this._asyncTemplateItemsMap = {}
}
}
var _default = exports.default = CollectionWidgetAsync;