@ozdao/martyrs 0.2.449 → 0.2.451
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/martyrs/src/components/Button/Button.vue.cjs +1 -1
- package/dist/martyrs/src/components/Button/Button.vue.js +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue2.cjs → Chips.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue2.js → Chips.vue.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue.cjs → Loader.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue.cjs.map → Loader.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs → Popup.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Popup/{Popup.vue.js → Popup.vue2.js} +2 -2
- package/dist/martyrs/src/components/Popup/{Popup.vue.cjs.map → Popup.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.cjs → SelectMulti.vue.cjs} +2 -2
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js.map → SelectMulti.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
- package/dist/martyrs/src/components/Slider/Slider.vue.cjs +1 -1
- package/dist/martyrs/src/components/Slider/Slider.vue.js +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +3 -3
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +3 -3
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +3 -3
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/GanttChart.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/organizations.server.js +34 -33
- package/dist/organizations.server.mjs +34 -33
- package/package.json +1 -1
- package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +1 -1
- package/src/modules/globals/views/components/layouts/Client.vue +1 -1
- package/src/modules/organizations/controllers/organizations.controller.js +37 -38
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
- package/dist/martyrs/src/components/Popup/Popup.vue.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
|
@@ -444,8 +444,9 @@ function requireOrganizations_controller() {
|
|
|
444
444
|
const savedMembership = await membership.save();
|
|
445
445
|
const orgTag = `organization_${savedOrganization._id}`;
|
|
446
446
|
await cache.delByTag(orgTag);
|
|
447
|
-
const
|
|
448
|
-
|
|
447
|
+
const organizationObject = savedOrganization.toObject();
|
|
448
|
+
const newCacheKey = JSON.stringify({ id: organizationObject._id });
|
|
449
|
+
await cache.setWithTags(newCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
449
450
|
res.status(201).json(savedOrganization);
|
|
450
451
|
} catch (error) {
|
|
451
452
|
console.error("Error:", error);
|
|
@@ -465,35 +466,35 @@ function requireOrganizations_controller() {
|
|
|
465
466
|
}
|
|
466
467
|
const orgTag = `organization_${organizationId}`;
|
|
467
468
|
await cache.delByTag(orgTag);
|
|
469
|
+
const organizationObject = organization.toObject();
|
|
468
470
|
const updateCacheKey = JSON.stringify({ _id: organizationId });
|
|
469
|
-
await cache.setWithTags(updateCacheKey, [
|
|
471
|
+
await cache.setWithTags(updateCacheKey, [organizationObject], [orgTag, "organizations"]);
|
|
470
472
|
res.status(200).json({ message: "Organization updated successfully", organization });
|
|
471
473
|
} catch (error) {
|
|
472
474
|
res.status(500).json({ error: error.message });
|
|
473
475
|
}
|
|
474
476
|
};
|
|
475
477
|
const deleteOrganization = async (req, res) => {
|
|
476
|
-
|
|
478
|
+
try {
|
|
479
|
+
const organization = await Organization.findOneAndRemove({ _id: req.params._id });
|
|
477
480
|
if (!organization) {
|
|
478
481
|
return res.status(404).send({ message: "Organization not found" });
|
|
479
482
|
}
|
|
480
|
-
Membership.deleteMany({ target: req.params._id })
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
const orgTag = `organization_${req.params._id}`;
|
|
489
|
-
cache.delByTag(orgTag);
|
|
490
|
-
res.send({ newToken });
|
|
491
|
-
}).catch((err) => {
|
|
492
|
-
res.status(500).send({ message: "Error deleting memberships: " + err.message });
|
|
483
|
+
await Membership.deleteMany({ target: req.params._id });
|
|
484
|
+
const newToken = jwt.sign({
|
|
485
|
+
_id: req.userId,
|
|
486
|
+
// Предполагаю, что req.userId доступен
|
|
487
|
+
organization: null
|
|
488
|
+
}, process.env.SECRET_KEY, {
|
|
489
|
+
expiresIn: 86400
|
|
490
|
+
// 24 hours
|
|
493
491
|
});
|
|
494
|
-
|
|
492
|
+
const orgTag = `organization_${req.params._id}`;
|
|
493
|
+
await cache.delByTag(orgTag);
|
|
494
|
+
res.send({ newToken });
|
|
495
|
+
} catch (err) {
|
|
495
496
|
res.status(500).send({ message: err.message });
|
|
496
|
-
}
|
|
497
|
+
}
|
|
497
498
|
};
|
|
498
499
|
const checkAccesses = async (req, res) => {
|
|
499
500
|
try {
|
|
@@ -503,8 +504,8 @@ function requireOrganizations_controller() {
|
|
|
503
504
|
if (cachedResult) {
|
|
504
505
|
return res.status(200).json(cachedResult);
|
|
505
506
|
}
|
|
506
|
-
const depts = await Department.find({ "members.user": uid });
|
|
507
|
-
const ownedOrgs = await Organization.find({ owner: uid });
|
|
507
|
+
const depts = await Department.find({ "members.user": uid }).lean();
|
|
508
|
+
const ownedOrgs = await Organization.find({ owner: uid }).lean();
|
|
508
509
|
const ownedOrgIds = ownedOrgs.map((org) => org._id.toString());
|
|
509
510
|
const accesses = {};
|
|
510
511
|
const processAccesses = (orgId, isOwner, deptAccesses) => {
|
|
@@ -667,16 +668,16 @@ function requireMemberships_controller() {
|
|
|
667
668
|
}
|
|
668
669
|
};
|
|
669
670
|
const deleteMembership = async (req, res) => {
|
|
670
|
-
const { _id, type, target, user
|
|
671
|
+
const { _id, type, target, user, role } = req.body;
|
|
671
672
|
try {
|
|
672
|
-
const membership = _id ? await Membership.findOneAndDelete({ _id: new ObjectId(_id) }) : await Membership.findOneAndDelete({ type, target, user
|
|
673
|
+
const membership = _id ? await Membership.findOneAndDelete({ _id: new ObjectId(_id) }) : await Membership.findOneAndDelete({ type, target, user, role });
|
|
673
674
|
if (!membership) {
|
|
674
675
|
return res.status(404).send({ errorCode: "MEMBERSHIP_NOT_FOUND" });
|
|
675
676
|
}
|
|
676
677
|
if (membership.type === "organization") {
|
|
677
678
|
await Department.updateMany(
|
|
678
679
|
{ organization: target },
|
|
679
|
-
{ $pull: { members: { user
|
|
680
|
+
{ $pull: { members: { user } } }
|
|
680
681
|
);
|
|
681
682
|
}
|
|
682
683
|
res.status(200).send(membership);
|
|
@@ -736,18 +737,18 @@ function requireInvites_controller() {
|
|
|
736
737
|
const createdMemberships = [];
|
|
737
738
|
try {
|
|
738
739
|
for (let invite of list) {
|
|
739
|
-
let
|
|
740
|
+
let user = null;
|
|
740
741
|
if (!invite || !invite.contact) {
|
|
741
742
|
continue;
|
|
742
743
|
}
|
|
743
744
|
if (invite.contact.includes("@")) {
|
|
744
|
-
|
|
745
|
+
user = await User.findOne({ email: invite.contact });
|
|
745
746
|
} else {
|
|
746
|
-
|
|
747
|
+
user = await User.findOne({ phone: invite.contact });
|
|
747
748
|
}
|
|
748
|
-
if (
|
|
749
|
+
if (user) {
|
|
749
750
|
const membership = new Membership({
|
|
750
|
-
user:
|
|
751
|
+
user: user._id,
|
|
751
752
|
type: "organization",
|
|
752
753
|
target: req.body.owner.target,
|
|
753
754
|
role: "member",
|
|
@@ -1375,7 +1376,7 @@ function requireOrganizations_policies() {
|
|
|
1375
1376
|
}
|
|
1376
1377
|
});
|
|
1377
1378
|
abacAccessControl.registerGlobalPolicy("OrganizationAccessPolicy", async (context) => {
|
|
1378
|
-
const { user
|
|
1379
|
+
const { user, resource, data, action, currentResource, req } = context;
|
|
1379
1380
|
if (!resource || !action) {
|
|
1380
1381
|
return false;
|
|
1381
1382
|
}
|
|
@@ -1394,19 +1395,19 @@ function requireOrganizations_policies() {
|
|
|
1394
1395
|
};
|
|
1395
1396
|
const orgId = findOrgId();
|
|
1396
1397
|
if (orgId) {
|
|
1397
|
-
if (
|
|
1398
|
+
if (user) {
|
|
1398
1399
|
try {
|
|
1399
1400
|
const objectId = new db.mongoose.Types.ObjectId(orgId);
|
|
1400
1401
|
const isOrgOwner = await Organization.exists({
|
|
1401
1402
|
_id: objectId,
|
|
1402
|
-
owner:
|
|
1403
|
+
owner: user
|
|
1403
1404
|
});
|
|
1404
1405
|
if (isOrgOwner) {
|
|
1405
1406
|
return true;
|
|
1406
1407
|
}
|
|
1407
1408
|
const departments = await Department.find({
|
|
1408
1409
|
organization: objectId,
|
|
1409
|
-
"members.user":
|
|
1410
|
+
"members.user": user
|
|
1410
1411
|
});
|
|
1411
1412
|
const hasAccess = departments.some((department) => {
|
|
1412
1413
|
const accessRights = department.accesses?.[resource];
|
package/package.json
CHANGED
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
:widthHidden='route.meta?.sidebar_width_hidden'
|
|
79
79
|
:width="route.meta?.sidebar_width"
|
|
80
80
|
:theme="headerTheme"
|
|
81
|
-
@closeSidebar="() => globals.state.isOpenSidebar =
|
|
81
|
+
@closeSidebar="() => globals.state.isOpenSidebar = false"
|
|
82
82
|
>
|
|
83
83
|
<transition name="moveFromTop" mode="out-in" appear>
|
|
84
84
|
<component
|
|
@@ -84,11 +84,9 @@ const controllerFactory = (db) => {
|
|
|
84
84
|
if(req.body._id === null) {
|
|
85
85
|
delete req.body._id;
|
|
86
86
|
}
|
|
87
|
-
|
|
88
87
|
try {
|
|
89
88
|
const organization = new Organization(req.body);
|
|
90
89
|
const savedOrganization = await organization.save();
|
|
91
|
-
|
|
92
90
|
const membership = new Membership({
|
|
93
91
|
user: savedOrganization.owner,
|
|
94
92
|
type: 'organization',
|
|
@@ -98,15 +96,18 @@ const controllerFactory = (db) => {
|
|
|
98
96
|
});
|
|
99
97
|
|
|
100
98
|
const savedMembership = await membership.save();
|
|
101
|
-
|
|
99
|
+
|
|
102
100
|
// Очищаем кэш для этой организации
|
|
103
101
|
const orgTag = `organization_${savedOrganization._id}`;
|
|
104
102
|
await cache.delByTag(orgTag);
|
|
105
|
-
|
|
103
|
+
|
|
104
|
+
// Convert the Mongoose document to a plain JavaScript object before caching
|
|
105
|
+
const organizationObject = savedOrganization.toObject();
|
|
106
|
+
|
|
106
107
|
// Обновляем кэш, добавляя новую организацию
|
|
107
|
-
const newCacheKey = JSON.stringify({
|
|
108
|
-
await cache.setWithTags(newCacheKey, [
|
|
109
|
-
|
|
108
|
+
const newCacheKey = JSON.stringify({ id: organizationObject._id });
|
|
109
|
+
await cache.setWithTags(newCacheKey, [organizationObject], [orgTag, 'organizations']);
|
|
110
|
+
|
|
110
111
|
res.status(201).json(savedOrganization);
|
|
111
112
|
} catch (error) {
|
|
112
113
|
console.error('Error:', error);
|
|
@@ -117,7 +118,6 @@ const controllerFactory = (db) => {
|
|
|
117
118
|
const update = async (req, res) => {
|
|
118
119
|
try {
|
|
119
120
|
const organizationId = req.params._id;
|
|
120
|
-
|
|
121
121
|
const updatedData = req.body;
|
|
122
122
|
|
|
123
123
|
const organization = await Organization.findByIdAndUpdate(organizationId, updatedData, {
|
|
@@ -133,9 +133,12 @@ const controllerFactory = (db) => {
|
|
|
133
133
|
const orgTag = `organization_${organizationId}`;
|
|
134
134
|
await cache.delByTag(orgTag);
|
|
135
135
|
|
|
136
|
+
// Преобразуем документ Mongoose в обычный объект перед кэшированием
|
|
137
|
+
const organizationObject = organization.toObject();
|
|
138
|
+
|
|
136
139
|
// Обновляем кэш новой версией организации
|
|
137
|
-
const updateCacheKey = JSON.stringify({ _id: organizationId });
|
|
138
|
-
await cache.setWithTags(updateCacheKey, [
|
|
140
|
+
const updateCacheKey = JSON.stringify({ _id: organizationId });
|
|
141
|
+
await cache.setWithTags(updateCacheKey, [organizationObject], [orgTag, 'organizations']);
|
|
139
142
|
|
|
140
143
|
res.status(200).json({ message: 'Organization updated successfully', organization });
|
|
141
144
|
} catch (error) {
|
|
@@ -144,35 +147,31 @@ const controllerFactory = (db) => {
|
|
|
144
147
|
};
|
|
145
148
|
|
|
146
149
|
const deleteOrganization = async (req, res) => {
|
|
147
|
-
|
|
148
|
-
.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
150
|
+
try {
|
|
151
|
+
const organization = await Organization.findOneAndRemove({ _id: req.params._id });
|
|
152
|
+
|
|
153
|
+
if (!organization) {
|
|
154
|
+
return res.status(404).send({ message: "Organization not found" });
|
|
155
|
+
}
|
|
152
156
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
// Удаление всех memberships, связанных с этой организацией
|
|
158
|
+
await Membership.deleteMany({ target: req.params._id });
|
|
159
|
+
|
|
160
|
+
const newToken = jwt.sign({
|
|
161
|
+
_id: req.userId, // Предполагаю, что req.userId доступен
|
|
162
|
+
organization: null
|
|
163
|
+
}, process.env.SECRET_KEY, {
|
|
164
|
+
expiresIn: 86400 // 24 hours
|
|
165
|
+
});
|
|
162
166
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
167
|
+
// Очищаем кэш для этой организации
|
|
168
|
+
const orgTag = `organization_${req.params._id}`;
|
|
169
|
+
await cache.delByTag(orgTag);
|
|
166
170
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
});
|
|
172
|
-
})
|
|
173
|
-
.catch(err => {
|
|
174
|
-
res.status(500).send({ message: err.message });
|
|
175
|
-
});
|
|
171
|
+
res.send({ newToken });
|
|
172
|
+
} catch (err) {
|
|
173
|
+
res.status(500).send({ message: err.message });
|
|
174
|
+
}
|
|
176
175
|
};
|
|
177
176
|
|
|
178
177
|
const checkAccesses = async (req, res) => {
|
|
@@ -186,8 +185,8 @@ const controllerFactory = (db) => {
|
|
|
186
185
|
return res.status(200).json(cachedResult);
|
|
187
186
|
}
|
|
188
187
|
|
|
189
|
-
const depts = await Department.find({ 'members.user': uid });
|
|
190
|
-
const ownedOrgs = await Organization.find({ owner: uid });
|
|
188
|
+
const depts = await Department.find({ 'members.user': uid }).lean(); // Используем lean() для получения обычных объектов
|
|
189
|
+
const ownedOrgs = await Organization.find({ owner: uid }).lean(); // Используем lean() для получения обычных объектов
|
|
191
190
|
const ownedOrgIds = ownedOrgs.map(org => org._id.toString());
|
|
192
191
|
|
|
193
192
|
const accesses = {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chips.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chips.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.vue2.cjs","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \n >\n <slot></slot>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":["clickOutside","ref","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgBA,aAAAA;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAASC,IAAG,IAAC,KAAK;AACxB,UAAM,mBAAmBC,IAAAA,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.vue.js","sources":["../../../../../src/components/Loader/Loader.vue"],"sourcesContent":["<template>\n <div class=\"circular-loader\" :class=\"{ 'circular-loader-centered': centered }\">\n <svg viewBox=\"25 25 50 50\">\n <circle class=\"circular-loader-fill\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n <circle class=\"circular-loader-circle\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke-miterlimit=\"10\" />\n </svg>\n <div v-if=\"progress\" class=\"progress-text\">{{ progress }}</div>\n <div v-if=\"status\" class=\"uppercase t-semi w-m-10r status-text\">{{ status }}</div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n progress: {\n type: Number,\n default: null,\n },\n status: {\n type: String,\n default: null,\n },\n centered: {\n type: Boolean,\n default: true, // По умолчанию лоадер центрирован (для обратной совместимости)\n },\n },\n};\n</script>\n\n<style>\n.circular-loader {\n position: relative;\n z-index: 50;\n height: 2rem;\n width: 2rem;\n}\n\n.circular-loader-centered {\n top: calc(50% - 1rem);\n left: calc(50% - 1rem);\n}\n\n.circular-loader svg {\n animation: rotate 2s linear infinite;\n}\n\n.circular-loader-circle {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n stroke-linecap: round;\n stroke: rgb(var(--main));\n animation: dash 1.5s ease-in-out infinite;\n}\n\n.circular-loader-fill {\n stroke-linecap: round;\n stroke: rgba(var(--black),0.2);\n}\n\n.progress-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 0.8rem;\n color: rgb(var(--main));;\n}\n\n.status-text {\n position: absolute;\n top: 120%;\n left: calc(50% - 5rem);\n font-size: 0.8rem;\n width: 10rem !important;\n text-align: center;\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes dash {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35;\n }\n 100% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: -124;\n }\n}\n</style>"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode"],"mappings":";;;AAYA,MAAK,YAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IACV;AAAA,EACF;AACH;;EA3BA,KAAA;AAAA,EAMyB,OAAM;;;EAN/B,KAAA;AAAA,EAOuB,OAAM;;;sBAN3BA,mBAOM,OAAA;AAAA,IAPD,OADPC,eAAA,CACa,mBAAiB,EAAA,4BAAuC,OAAQ,UAAA,CAAA;AAAA;8BACzEC,mBAGM,OAAA,EAHD,SAAQ,iBAAa;AAAA,MACxBA,mBAAkH,UAAA;AAAA,QAA1G,OAAM;AAAA,QAAuB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;MAC3GA,mBAAoH,UAAA;AAAA,QAA5G,OAAM;AAAA,QAAyB,IAAG;AAAA,QAAK,IAAG;AAAA,QAAK,GAAE;AAAA,QAAK,MAAK;AAAA,QAAO,gBAAa;AAAA,QAAI,qBAAkB;AAAA;;IAEpG,OAAQ,yBAAnBF,mBAA+D,OAA/D,YAA+DG,gBAAjB,OAAQ,QAAA,GAAA,CAAA,KAN1DC,mBAAA,IAAA,IAAA;AAAA,IAOe,OAAM,uBAAjBJ,mBAAkF,OAAlF,YAAkFG,gBAAf,OAAM,MAAA,GAAA,CAAA,KAP7EC,mBAAA,IAAA,IAAA;AAAA;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Popup.vue.js","sources":["../../../../../src/components/Popup/Popup.vue"],"sourcesContent":["<template>\n\t\t<transition name=\"moveFromTop\">\n\t\t\t<teleport to=\"body\" v-if=\"isPopupOpen\">\n\t\t\t\t<div v-if=\"isPopupOpen\" key=\"popup-content\" class=\"pd-small z-index-6 popup-wrapper\"\n\t\t\t\t\t:class=\"{\n \t\t\t\t\t'pd-t-extra': MOBILE_APP === 'ios', \n\t\t\t\t\t}\"\n\t\t\t\t>\n\n\t\t\t\t\t<transition name=\"TransitionTranslateY\" mode=\"out-in\">\n\t\t\t\t\t\t<section class=\"h-max-100 o-y-scroll pos-relative z-index-4\" v-bind=\"$attrs\" :class=\"$attrs.class\">\n\t\t\t\t\t\t\t\t<h4 v-if=\"title\" class=\"mn-b-small\">{{title}}</h4>\n\t\t\t\t\t\t\t\t<IconCross :fill=\"'rgb(var(--white))'\" @click=\"closePopup()\" class=\"cursor-pointer bg-second pd-micro radius-extra pos-absolute pos-t-0 pos-r-0 mn-t-semi mn-r-semi hover-scale-1 i-medium z-index-5\"/>\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</section> \n\t\t\t\t\t</transition>\n\n\t\t\t\t\t<div \n\t\t\t\t\t\t@click=\"closePopup()\" \n\t\t\t\t :class=\"{'active':isPopupOpen === true}\" \n\t\t\t\t class=\"color-overlay z-index-3\">\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t</teleport>\n\t</transition>\n</template>\n\n<script setup>\nimport { computed, watch, onMounted, ref, nextTick } from 'vue';\n// Import libs\nimport { useRoute, useRouter } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\n// Icons\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n// Define props\nconst props = defineProps({\n isPopupOpen: {\n \ttype: Boolean,\n\t default: false\n },\n style: String,\n title: String,\n});\nconst emits = defineEmits(['close-popup'])\n\nfunction closePopup() {\n emits(\"close-popup\");\n} \n\nwatch(() => props.isPopupOpen, (newVal) => {\n if (newVal) {\n document.body.classList.add('no-scroll');\n } else {\n document.body.classList.remove('no-scroll');\n }\n});\n\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\n// Localization\nconst text = {\n \tmessages: {\n\t en: {},\n\t ru: {}\n\t}\n}\nconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\t.no-scroll {\n\t overflow: hidden;\n\t}\n\n\t.popup-wrapper {\n\t\tdisplay: flex;\n\t\tposition: fixed;\n\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\tz-index: 40;\n\n\t\t.popup {\n\t\t\tposition: absolute;\n\t\t\theight: auto;\n\t\t\tpadding: 2rem;\n\t\t\tmin-width: 24rem;\n\t\t\tborder-radius: 2rem;\n\t\t\toverflow: hidden;\n\n\t\t\tcolor: white;\n\t\t\tbackground: black;\n\n\t\t\tz-index: 40;\n\t\t}\n\t}\n\n\t.color-overlay {\n\t\tdisplay: block;\n\t\tposition: fixed;\n\n\t\tleft: 0;\n\t\ttop: 0;\n\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\tbackground: rgba(0,0,0,0.0);\n\t\tpointer-events: none;\n\n\t\ttransform: scale(1.5);\n\n\t\ttransition: all 0.5s cubic-bezier(.31,.79,.24,.92);\n\n\t\t&.active {\n\t\t\tbackground: rgba(#000,0.25);\n\t\t\tpointer-events: all;\n\t\t}\n\t}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCA,UAAM,QAAQ;AAQd,UAAM,QAAQ;AAEd,aAAS,aAAa;AACpB,YAAM,aAAa;AAAA,IACrB;AAEA,UAAM,MAAM,MAAM,aAAa,CAAC,WAAW;AACzC,UAAI,QAAQ;AACV,iBAAS,KAAK,UAAU,IAAI,WAAW;AAAA,MAC3C,OAAS;AACL,iBAAS,KAAK,UAAU,OAAO,WAAW;AAAA,MAC9C;AAAA,IACA,CAAC;AAGa,aAAQ;AACP,cAAS;AAExB,UAAM,OAAO;AAAA,MACV,UAAU;AAAA,QACR,IAAI,CAAE;AAAA,QACN,IAAI,CAAA;AAAA,MACT;AAAA,IACA;AACA,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMulti.vue2.cjs","sources":["../../../../../src/components/SelectMulti/SelectMulti.vue"],"sourcesContent":["<template>\n <div\n :tabindex=\"searchable ? -1 : tabindex\"\n :class=\"{ 'multiselect--active': isOpen, 'multiselect--disabled': disabled, 'multiselect--above': isAbove, 'multiselect--has-options-group': hasOptionGroup }\"\n @focus=\"activate()\"\n @blur=\"searchable ? false : deactivate()\"\n @keydown.self.down.prevent=\"pointerForward()\"\n @keydown.self.up.prevent=\"pointerBackward()\"\n @keypress.enter.tab.stop.self=\"addPointerElement($event)\"\n @keyup.esc=\"deactivate()\"\n class=\"multiselect flex flex-v-center\"\n role=\"combobox\"\n :aria-owns=\"'listbox-'+id\">\n \n <slot name=\"caret\" :toggle=\"toggle\">\n <div @mousedown.prevent.stop=\"toggle()\" class=\"multiselect__select\"></div>\n </slot>\n \n <slot name=\"clear\" :search=\"search\"></slot>\n \n <div ref=\"tags\" class=\"multiselect__tags\">\n <slot\n name=\"selection\"\n :search=\"search\"\n :remove=\"removeElement\"\n :values=\"visibleValues\"\n :is-open=\"isOpen\"\n >\n <div class=\"multiselect__tags-wrap\" v-show=\"visibleValues.length > 0\">\n <template v-for=\"(option, index) of visibleValues\" @mousedown.prevent>\n <slot name=\"tag\" :option=\"option\" :search=\"search\" :remove=\"removeElement\">\n <span class=\"multiselect__tag\" :key=\"index\">\n <span v-text=\"getOptionLabel(option)\"></span>\n <i tabindex=\"1\" @keypress.enter.prevent=\"removeElement(option)\"\n @mousedown.prevent=\"removeElement(option)\" class=\"multiselect__tag-icon\"></i>\n </span>\n </slot>\n </template>\n </div>\n <template v-if=\"internalValue && internalValue.length > limit\">\n <slot name=\"limit\">\n <strong class=\"multiselect__strong\" v-text=\"limitText(internalValue.length - limit)\"/>\n </slot>\n </template>\n </slot>\n <transition name=\"multiselect__loading\">\n <slot name=\"loading\">\n <div v-show=\"loading\" class=\"multiselect__spinner\"/>\n </slot>\n </transition>\n <input\n ref=\"search\"\n v-if=\"searchable\"\n :name=\"name\"\n :id=\"id\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n :value=\"search\"\n :disabled=\"disabled\"\n :tabindex=\"tabindex\"\n @input=\"updateSearch($event.target.value)\"\n @focus.prevent=\"activate()\"\n @blur.prevent=\"deactivate()\"\n @keyup.esc=\"deactivate()\"\n @keydown.down.prevent=\"pointerForward()\"\n @keydown.up.prevent=\"pointerBackward()\"\n @keypress.enter.prevent.stop.self=\"addPointerElement($event)\"\n @keydown.delete.stop=\"removeLastElement()\"\n class=\"multiselect__input\"\n :aria-controls=\"'listbox-'+id\"\n />\n <span\n v-if=\"isSingleLabelVisible\"\n class=\"multiselect__single\"\n @mousedown.prevent=\"toggle\"\n >\n <slot name=\"singleLabel\" :option=\"singleValue\">\n {{ currentOptionLabel }}\n </slot>\n </span>\n <span\n v-if=\"isPlaceholderVisible\"\n class=\"multiselect__placeholder\"\n @mousedown.prevent=\"toggle\"\n >\n <slot name=\"placeholder\">\n {{ placeholder }}\n </slot>\n </span>\n </div>\n \n <transition name=\"multiselect\">\n <div\n class=\"multiselect__content-wrapper\"\n v-show=\"isOpen\"\n @focus=\"activate\"\n tabindex=\"-1\"\n @mousedown.prevent\n :style=\"{ maxHeight: optimizedHeight + 'px' }\"\n ref=\"list\"\n :class=\"$attrs.class\"\n >\n <ul class=\"multiselect__content\" :style=\"contentStyle\" role=\"listbox\" :id=\"'listbox-'+id\">\n <slot name=\"beforeList\"></slot>\n <li v-if=\"multiple && max === internalValue.length\">\n <span class=\"multiselect__option\">\n <slot name=\"maxElements\">Maximum of {{ max }} options selected. First remove a selected option to select another.</slot>\n </span>\n </li>\n <template v-if=\"!max || internalValue.length < max\">\n <li class=\"multiselect__element\"\n v-for=\"(option, index) of filteredOptions\"\n :key=\"index\"\n v-bind:id=\"id + '-' + index\"\n v-bind:role=\"!(option && (option.$isLabel || option.$isDisabled)) ? 'option' : null\">\n <span\n v-if=\"!(option && (option.$isLabel || option.$isDisabled))\"\n :class=\"optionHighlight(index, option)\"\n @click.stop=\"select(option)\"\n @mouseenter.self=\"pointerSet(index)\"\n :data-select=\"option && option.isTag ? tagPlaceholder : selectLabelText\"\n :data-selected=\"selectedLabelText\"\n :data-deselect=\"deselectLabelText\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option=\"option\" :search=\"search\" :index=\"index\">\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n <span\n v-if=\"option && (option.$isLabel || option.$isDisabled)\"\n :data-select=\"groupSelect && selectGroupLabelText\"\n :data-deselect=\"groupSelect && deselectGroupLabelText\"\n :class=\"groupHighlight(index, option)\"\n @mouseenter.self=\"groupSelect && pointerSet(index)\"\n @mousedown.prevent=\"selectGroup(option)\"\n class=\"multiselect__option\">\n <slot name=\"option\" :option=\"option\" :search=\"search\" :index=\"index\">\n <span>{{ getOptionLabel(option) }}</span>\n </slot>\n </span>\n </li>\n </template>\n <li v-show=\"showNoResults && (filteredOptions.length === 0 && search && !loading)\">\n <span class=\"multiselect__option\">\n <slot name=\"noResult\" :search=\"search\">No elements found. Consider changing the search query.</slot>\n </span>\n </li>\n <li v-show=\"showNoOptions && ((options.length === 0 || (hasOptionGroup === true && filteredOptions.length === 0)) && !search && !loading)\">\n <span class=\"multiselect__option\">\n <slot name=\"noOptions\">List is empty.</slot>\n </span>\n </li>\n <slot name=\"afterList\"></slot>\n </ul>\n </div>\n </transition>\n </div>\n</template>\n\n<script>\nimport multiselectMixin from './multiselectMixin'\nimport pointerMixin from './pointerMixin'\n\nexport default {\n name: 'vue-multiselect',\n mixins: [multiselectMixin, pointerMixin],\n compatConfig: {\n MODE: 3,\n ATTR_ENUMERATED_COERCION: false\n },\n props: {\n /**\n * name attribute to match optional label element\n * @default ''\n * @type {String}\n */\n name: {\n type: String,\n default: ''\n },\n /**\n * Presets the selected options value.\n * @type {Object||Array||String||Integer}\n */\n modelValue: {\n type: null,\n default () {\n return []\n }\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectLabel: {\n type: String,\n default: 'Press enter to select'\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectGroupLabel: {\n type: String,\n default: 'Press enter to select group'\n },\n /**\n * String to show next to selected option\n * @default 'Selected'\n * @type {String}\n */\n selectedLabel: {\n type: String,\n default: 'Selected'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectLabel: {\n type: String,\n default: 'Press enter to remove'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectGroupLabel: {\n type: String,\n default: 'Press enter to deselect group'\n },\n /**\n * Decide whether to show pointer labels\n * @default true\n * @type {Boolean}\n */\n showLabels: {\n type: Boolean,\n default: true\n },\n /**\n * Limit the display of selected options. The rest will be hidden within the limitText string.\n * @default 99999\n * @type {Integer}\n */\n limit: {\n type: Number,\n default: 99999\n },\n /**\n * Sets maxHeight style value of the dropdown\n * @default 300\n * @type {Integer}\n */\n maxHeight: {\n type: Number,\n default: 300\n },\n /**\n * Function that process the message shown when selected\n * elements pass the defined limit.\n * @default 'and * more'\n * @param {Int} count Number of elements more than limit\n * @type {Function}\n */\n limitText: {\n type: Function,\n default: (count) => `and ${count} more`\n },\n /**\n * Set true to trigger the loading spinner.\n * @default False\n * @type {Boolean}\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Disables the multiselect if true.\n * @default false\n * @type {Boolean}\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Fixed opening direction\n * @default ''\n * @type {String}\n */\n openDirection: {\n type: String,\n default: ''\n },\n /**\n * Shows slot with message about empty options\n * @default true\n * @type {Boolean}\n */\n showNoOptions: {\n type: Boolean,\n default: true\n },\n showNoResults: {\n type: Boolean,\n default: true\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n computed: {\n hasOptionGroup () {\n return this.groupValues && this.groupLabel && this.groupSelect\n },\n isSingleLabelVisible () {\n return (\n (this.singleValue || this.singleValue === 0) &&\n (!this.isOpen || !this.searchable) &&\n !this.visibleValues.length\n )\n },\n isPlaceholderVisible () {\n return !this.internalValue.length && (!this.searchable || !this.isOpen)\n },\n visibleValues () {\n return this.multiple ? this.internalValue.slice(0, this.limit) : []\n },\n singleValue () {\n return this.internalValue[0]\n },\n deselectLabelText () {\n return this.showLabels ? this.deselectLabel : ''\n },\n deselectGroupLabelText () {\n return this.showLabels ? this.deselectGroupLabel : ''\n },\n selectLabelText () {\n return this.showLabels ? this.selectLabel : ''\n },\n selectGroupLabelText () {\n return this.showLabels ? this.selectGroupLabel : ''\n },\n selectedLabelText () {\n return this.showLabels ? this.selectedLabel : ''\n },\n inputStyle () {\n if (\n this.searchable ||\n (this.multiple && this.modelValue && this.modelValue.length)\n ) {\n // Hide input by setting the width to 0 allowing it to receive focus\n return this.isOpen\n ? {width: '100%'}\n : {width: '0', position: 'absolute', padding: '0'}\n }\n return ''\n },\n contentStyle () {\n return this.options.length\n ? {display: 'inline-block'}\n : {display: 'block'}\n },\n isAbove () {\n if (this.openDirection === 'above' || this.openDirection === 'top') {\n return true\n } else if (\n this.openDirection === 'below' ||\n this.openDirection === 'bottom'\n ) {\n return false\n } else {\n return this.preferredOpenDirection === 'above'\n }\n },\n showSearchInput () {\n return (\n this.searchable &&\n (this.hasSingleSelectedSlot &&\n (this.visibleSingleValue || this.visibleSingleValue === 0)\n ? this.isOpen\n : true)\n )\n }\n }\n}\n</script>\n\n<style>\n\n fieldset[disabled] .multiselect {\n pointer-events: none;\n }\n\n .multiselect__spinner {\n position: absolute;\n right: 1px;\n top: 1px;\n width: 40px;\n height: 38px;\n background: #fff;\n display: block;\n }\n\n .multiselect__spinner::before,\n .multiselect__spinner::after {\n position: absolute;\n content: \"\";\n top: 50%;\n left: 50%;\n margin: -8px 0 0 -8px;\n width: 16px;\n height: 16px;\n border-radius: 100%;\n border-color: #41b883 transparent transparent;\n border-style: solid;\n border-width: 2px;\n box-shadow: 0 0 0 1px transparent;\n }\n\n .multiselect__spinner::before {\n animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);\n animation-iteration-count: infinite;\n }\n\n .multiselect__spinner::after {\n animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);\n animation-iteration-count: infinite;\n }\n\n .multiselect__loading-enter-active,\n .multiselect__loading-leave-active {\n transition: opacity 0.4s ease-in-out;\n opacity: 1;\n }\n\n .multiselect__loading-enter,\n .multiselect__loading-leave-active {\n opacity: 0;\n }\n\n .multiselect,\n .multiselect__input,\n .multiselect__single {\n font-family: inherit;\n touch-action: manipulation;\n }\n\n .multiselect {\n display: block;\n position: relative;\n width: 100%;\n min-height: 40px;\n }\n\n .multiselect * {\n box-sizing: border-box;\n }\n\n .multiselect:focus {\n outline: none;\n }\n\n .multiselect--disabled {\n background: #ededed;\n pointer-events: none;\n opacity: 0.6;\n }\n\n .multiselect--active {\n z-index: 50;\n }\n\n .multiselect--active:not(.multiselect--above) .multiselect__current,\n .multiselect--active:not(.multiselect--above) .multiselect__input,\n .multiselect--active:not(.multiselect--above) .multiselect__tags {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .multiselect--active .multiselect__select {\n transform: rotateZ(180deg);\n }\n\n .multiselect--above.multiselect--active .multiselect__current,\n .multiselect--above.multiselect--active .multiselect__input,\n .multiselect--above.multiselect--active .multiselect__tags {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .multiselect__input,\n .multiselect__single,\n .multiselect__placeholder {\n position: relative;\n display: inline-block;\n min-height: 20px;\n line-height: 20px;\n border: none;\n width: calc(100%);\n height: inherit;\n box-sizing: border-box;\n vertical-align: top;\n display: flex;\n align-items: center;\n }\n\n .multiselect__input::placeholder {\n color: #35495e;\n }\n\n .multiselect__tag ~ .multiselect__input,\n .multiselect__tag ~ .multiselect__single {\n width: auto;\n }\n\n .multiselect__input:hover,\n .multiselect__single:hover {\n border-color: #cfcfcf;\n }\n\n .multiselect__input:focus,\n .multiselect__single:focus {\n border-color: #a8a8a8;\n outline: none;\n }\n\n .multiselect__tags-wrap {\n display: inline;\n }\n\n .multiselect__tags {\n display: block;\n height: inherit;\n }\n\n .multiselect__tag {\n position: relative;\n display: inline-block;\n padding: 4px 26px 4px 10px;\n border-radius: 5px;\n margin-right: 10px;\n color: #fff;\n line-height: 1;\n background: #41b883;\n margin-bottom: 5px;\n white-space: nowrap;\n overflow: hidden;\n max-width: 100%;\n text-overflow: ellipsis;\n }\n\n .multiselect__tag-icon {\n cursor: pointer;\n margin-left: 7px;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n font-weight: 700;\n font-style: initial;\n width: 22px;\n text-align: center;\n line-height: 22px;\n transition: all 0.2s ease;\n border-radius: 5px;\n }\n\n .multiselect__tag-icon::after {\n content: \"×\";\n color: #266d4d;\n font-size: 14px;\n }\n\n /* // Remove these lines to avoid green closing button\n //.multiselect__tag-icon:focus,\n //.multiselect__tag-icon:hover {\n // background: #369a6e;\n //} */\n\n .multiselect__tag-icon:focus::after,\n .multiselect__tag-icon:hover::after {\n color: white;\n }\n\n .multiselect__current {\n line-height: 16px;\n min-height: 40px;\n box-sizing: border-box;\n display: block;\n overflow: hidden;\n padding: 8px 12px 0;\n padding-right: 30px;\n white-space: nowrap;\n margin: 0;\n text-decoration: none;\n border-radius: 5px;\n border: 1px solid #e8e8e8;\n cursor: pointer;\n }\n\n .multiselect__select {\n line-height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: center;\n position: absolute;\n box-sizing: border-box;\n width: 40px;\n height: 38px;\n right: 1px;\n top: calc( 50% - 19px);\n padding: 4px 8px;\n margin: 0;\n text-decoration: none;\n text-align: center;\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n\n .multiselect__select::before {\n position: relative;\n color: #999;\n margin-top: 4px;\n border-style: solid;\n border-width: 5px 5px 0 5px;\n border-color: #999 transparent transparent transparent;\n content: \"\";\n }\n\n\n .multiselect--active .multiselect__placeholder {\n display: none;\n }\n\n .multiselect__content-wrapper {\n position: absolute;\n display: block;\n background: #fff;\n width: 100%;\n max-height: 240px;\n height: min-content;\n overflow: auto;\n left: 0;\n border-top: none;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n z-index: 50;\n -webkit-overflow-scrolling: touch;\n }\n\n .multiselect__content {\n list-style: none;\n display: inline-block;\n padding: 0;\n margin: 0;\n min-width: 100%;\n vertical-align: top;\n }\n\n .multiselect--above .multiselect__content-wrapper {\n bottom: 100%;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n border-bottom: none;\n border-top: 1px solid #e8e8e8;\n }\n\n .multiselect__content::-webkit-scrollbar {\n display: none;\n }\n\n .multiselect__element {\n display: block;\n }\n\n .multiselect__option {\n display: block;\n padding: 12px;\n min-height: 40px;\n line-height: 16px;\n text-decoration: none;\n text-transform: none;\n vertical-align: middle;\n position: relative;\n cursor: pointer;\n white-space: nowrap;\n }\n\n .multiselect__option::after {\n top: 0;\n right: 0;\n position: absolute;\n line-height: 40px;\n padding-right: 12px;\n padding-left: 20px;\n font-size: 13px;\n }\n\n .multiselect__option--highlight {\n background: rgba(var(--main),0.1);\n outline: none;\n }\n\n .multiselect__option--highlight::after {\n content: attr(data-select);\n }\n\n .multiselect__option--selected {\n background: #f3f3f3;\n color: #35495e;\n font-weight: bold;\n }\n\n .multiselect__option--selected::after {\n content: attr(data-selected);\n color: silver;\n background: inherit;\n }\n\n .multiselect__option--selected.multiselect__option--highlight {\n background: rgba(var(--red),0.1);\n }\n\n .multiselect__option--selected.multiselect__option--highlight::after {\n content: attr(data-deselect);\n }\n\n .multiselect--disabled .multiselect__current,\n .multiselect--disabled .multiselect__select {\n background: #ededed;\n color: #a6a6a6;\n }\n\n .multiselect__option--disabled {\n background: #ededed !important;\n color: #a6a6a6 !important;\n cursor: text;\n pointer-events: none;\n }\n\n .multiselect__option--group {\n background: #ededed;\n color: #35495e;\n }\n\n .multiselect__option--group.multiselect__option--highlight {\n background: #35495e;\n color: #fff;\n }\n\n .multiselect__option--group.multiselect__option--highlight::after {\n background: #35495e;\n }\n\n .multiselect__option--disabled.multiselect__option--highlight {\n background: #dedede;\n }\n\n .multiselect__option--group-selected.multiselect__option--highlight {\n background: #ff6a6a;\n color: #fff;\n }\n\n .multiselect__option--group-selected.multiselect__option--highlight::after {\n background: #ff6a6a;\n content: attr(data-deselect);\n color: #fff;\n }\n\n .multiselect-enter-active,\n .multiselect-leave-active {\n transition: all 0.15s ease;\n }\n\n .multiselect-enter,\n .multiselect-leave-active {\n opacity: 0;\n }\n\n .multiselect__strong {\n margin-bottom: 8px;\n line-height: 20px;\n display: inline-block;\n vertical-align: top;\n }\n\n *[dir=\"rtl\"] .multiselect {\n text-align: right;\n }\n\n *[dir=\"rtl\"] .multiselect__select {\n right: auto;\n left: 1px;\n }\n\n *[dir=\"rtl\"] .multiselect__tags {\n padding: 8px 8px 0 40px;\n }\n\n *[dir=\"rtl\"] .multiselect__content {\n text-align: right;\n }\n\n *[dir=\"rtl\"] .multiselect__option::after {\n right: auto;\n left: 0;\n }\n\n *[dir=\"rtl\"] .multiselect__clear {\n right: auto;\n left: 12px;\n }\n\n *[dir=\"rtl\"] .multiselect__spinner {\n right: auto;\n left: 1px;\n }\n\n @keyframes spinning {\n from {\n transform: rotate(0);\n }\n\n to {\n transform: rotate(2turn);\n }\n }\n</style>\n"],"names":["multiselectMixin","pointerMixin","_createElementBlock","_normalizeClass","_withKeys","_withModifiers","_renderSlot","_createElementVNode","_withDirectives","_openBlock","_Fragment","_renderList","_toDisplayString","_vShow","_createCommentVNode","_createVNode","_Transition","_withCtx","_normalizeStyle","_createTextVNode"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.vue2.cjs","sources":["../../../../../src/components/Tab/Tab.vue"],"sourcesContent":["<template>\n <div class=\"flex-nowrap flex-v-center flex pos-relative\">\n <button \n v-for=\"(tab, index) in tabs\" \n :key=\"index\" \n @click=\"handleTabClick(index, tab)\" \n class=\"z-index-1 t-center cursor-pointer\"\n :style=\"isSelected(index, tab) ? 'background: rgb(var(--main)) !important' : ''\"\n :class=\"[\n isSelected(index, tab) ? 'bg-main' : '',\n tabClass ? tabClass : 'pd-small pd-r-medium pd-l-medium w-max pd-small radius-small'\n ]\"\n >\n {{tab.name || tab.label}}\n </button>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch } from 'vue'\n\nconst emit = defineEmits(['update:selected', 'tab-click']);\n\nconst props = defineProps({\n tabs: Array,\n tabClass: String,\n selected: [String, Number],\n modelValue: [String, Number],\n callback: Function\n})\n\nconst selectedTab = ref(0)\n\n// Handle both v-model and selected prop for backward compatibility\nconst updateSelectedIndex = () => {\n if (props.modelValue !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.modelValue)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n } else if (props.selected !== undefined) {\n const selectedIndex = props.tabs.findIndex(tab => tab.value === props.selected)\n if (selectedIndex !== -1) {\n selectedTab.value = selectedIndex\n }\n }\n}\n\n// Initial setup\nupdateSelectedIndex()\n\n// Watch for changes in selected or modelValue props\nwatch(() => props.selected, updateSelectedIndex)\nwatch(() => props.modelValue, updateSelectedIndex)\n\n// Check if tab is selected\nconst isSelected = (index, tab) => {\n if (props.modelValue !== undefined) {\n return tab.value === props.modelValue\n } else if (props.selected !== undefined) {\n return tab.value === props.selected\n }\n return index === selectedTab.value\n}\n\n// Handle tab click\nfunction handleTabClick(index, tab) {\n selectedTab.value = index\n \n // Emit both events for flexibility\n emit('update:selected', tab.value)\n emit('tab-click', { index, tab })\n \n // For v-model support\n if (props.modelValue !== undefined) {\n emit('update:modelValue', tab.value)\n }\n \n // Call callback if provided\n if (props.callback) props.callback(tab)\n}\n</script>\n\n<style lang=\"scss\">\n.tab-selector {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 0;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n</style>"],"names":["ref","watch"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,UAAM,OAAO;AAEb,UAAM,QAAQ;AAQd,UAAM,cAAcA,IAAG,IAAC,CAAC;AAGzB,UAAM,sBAAsB,MAAM;AAChC,UAAI,MAAM,eAAe,QAAW;AAClC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,UAAU;AAChF,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA,WAAa,MAAM,aAAa,QAAW;AACvC,cAAM,gBAAgB,MAAM,KAAK,UAAU,SAAO,IAAI,UAAU,MAAM,QAAQ;AAC9E,YAAI,kBAAkB,IAAI;AACxB,sBAAY,QAAQ;AAAA,QAC1B;AAAA,MACA;AAAA,IACA;AAGA,wBAAmB;AAGnBC,QAAAA,MAAM,MAAM,MAAM,UAAU,mBAAmB;AAC/CA,QAAAA,MAAM,MAAM,MAAM,YAAY,mBAAmB;AAGjD,UAAM,aAAa,CAAC,OAAO,QAAQ;AACjC,UAAI,MAAM,eAAe,QAAW;AAClC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B,WAAa,MAAM,aAAa,QAAW;AACvC,eAAO,IAAI,UAAU,MAAM;AAAA,MAC/B;AACE,aAAO,UAAU,YAAY;AAAA,IAC/B;AAGA,aAAS,eAAe,OAAO,KAAK;AAClC,kBAAY,QAAQ;AAGpB,WAAK,mBAAmB,IAAI,KAAK;AACjC,WAAK,aAAa,EAAE,OAAO,IAAK,CAAA;AAGhC,UAAI,MAAM,eAAe,QAAW;AAClC,aAAK,qBAAqB,IAAI,KAAK;AAAA,MACvC;AAGE,UAAI,MAAM,SAAU,OAAM,SAAS,GAAG;AAAA,IACxC;;;;;;;;;;;;;;;;;;;"}
|