diff --git a/app/Console/Commands/Subscriptions/MigrateSubscriptions.php b/app/Console/Commands/Subscriptions/MigrateSubscriptions.php new file mode 100644 index 0000000000..a635ea17d8 --- /dev/null +++ b/app/Console/Commands/Subscriptions/MigrateSubscriptions.php @@ -0,0 +1,85 @@ +where('stripe_status', 'active') + ->whereIn('stripe_price', $old) + ->has('user') + ->chunkById(200, function ($subs) { + if ($this->count > $this->limit) { + return false; + } + foreach ($subs as $s) { + if ($this->count > $this->limit) { + return false; + } + $this->info('User #' . $s->user->id . ' ' . $s->user->email . ' https://dashboard.stripe.com/customers/' . $s->user->stripe_id); + try { + $old = $s->stripe_price; + $new = $this->map($old); + if ($new === 'error' || empty($new)) { + $this->error('Invalid old price ' . $old . ' to ' . $new); + continue; + } + $s->user->subscription('kanka')->noProrate()->swap($new); + $this->info('(' . $s->user->pledge . '): ' . $old . ' => ' . $new); + } catch (\Exception $e) { + $this->error($e->getMessage()); + } + $this->count++; + } + }); + + } + + protected function map(string $price): string + { + return match($price) { + config('subscription.old.oe') => config('subscription.owlbear.eur.monthly'), + config('subscription.old.oey') => config('subscription.owlbear.eur.yearly'), + config('subscription.old.ou') => config('subscription.owlbear.usd.monthly'), + config('subscription.old.ouy') => config('subscription.owlbear.usd.yearly'), + + config('subscription.old.we') => config('subscription.wyvern.eur.monthly'), + config('subscription.old.wey') => config('subscription.wyvern.eur.yearly'), + config('subscription.old.wu') => config('subscription.wyvern.usd.monthly'), + config('subscription.old.wuy') => config('subscription.wyvern.usd.yearly'), + + config('subscription.old.ee') => config('subscription.elemental.eur.monthly'), + config('subscription.old.eey') => config('subscription.elemental.eur.yearly'), + config('subscription.old.eu') => config('subscription.elemental.usd.monthly'), + config('subscription.old.euy') => config('subscription.elemental.usd.yearly'), + default => 'error', + }; + } +} diff --git a/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php b/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php index a3102b82e3..2cc0c1c9c9 100644 --- a/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php +++ b/app/Console/Commands/Subscriptions/UpcomingYearlyCommand.php @@ -44,14 +44,11 @@ public function __construct() */ public function handle() { - $plans = [ - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.yearly'), - ]; + $plans = array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); $now = Carbon::now()->addMonth(); $log = "Looking for active yearly subscriptions created on month {$now->month} and day {$now->day}"; diff --git a/app/Datagrids/Bulks/CreatureBulk.php b/app/Datagrids/Bulks/CreatureBulk.php index b01c4653a5..4fbfb1c6bf 100644 --- a/app/Datagrids/Bulks/CreatureBulk.php +++ b/app/Datagrids/Bulks/CreatureBulk.php @@ -10,7 +10,12 @@ class CreatureBulk extends Bulk 'creature_id', 'tags', 'private_choice', + 'extinct_choice', 'entity_image', 'entity_header', ]; + + protected $booleans = [ + 'is_extinct' + ]; } diff --git a/app/Datagrids/Filters/CreatureFilter.php b/app/Datagrids/Filters/CreatureFilter.php index 2f167b6a64..45ac6e0ebd 100644 --- a/app/Datagrids/Filters/CreatureFilter.php +++ b/app/Datagrids/Filters/CreatureFilter.php @@ -23,6 +23,7 @@ public function build() 'model' => Creature::class, ]) ->location() + ->add('is_extinct') ->isPrivate() ->template() ->hasImage() diff --git a/app/Http/Controllers/Api/v1/CampaignApiController.php b/app/Http/Controllers/Api/v1/CampaignApiController.php index e05df78c98..8d0bd090dc 100644 --- a/app/Http/Controllers/Api/v1/CampaignApiController.php +++ b/app/Http/Controllers/Api/v1/CampaignApiController.php @@ -10,7 +10,6 @@ class CampaignApiController extends ApiController { public function index(\Illuminate\Http\Request $request) { - // @phpstan-ignore-next-line $campaigns = $request ->user() ->campaigns() diff --git a/app/Http/Controllers/Calendars/Bulks/EntityEventController.php b/app/Http/Controllers/Calendars/Bulks/EntityEventController.php new file mode 100644 index 0000000000..399b2bb021 --- /dev/null +++ b/app/Http/Controllers/Calendars/Bulks/EntityEventController.php @@ -0,0 +1,39 @@ +authorize('update', $calendar); + $action = $request->get('action'); + $models = $request->get('model'); + if (!in_array($action, $this->validBulkActions()) || empty($models)) { + return redirect()->back(); + } + + if ($action === 'edit') { + return $this->campaign($campaign)->bulkBatch(route('calendars.entity-events.bulk', [ + 'campaign' => $campaign, 'calendar' => $calendar]), '_calendar-event', $models, $calendar); + } + + $count = $this->campaign($campaign)->bulkProcess($request, EntityEvent::class); + + return redirect() + ->route('calendars.events', [$campaign, 'calendar' => $calendar]) + ->with('success', trans_choice('calendars.events.bulks.' . $action, $count, ['count' => $count])) + ; + } +} diff --git a/app/Http/Controllers/Calendars/EventController.php b/app/Http/Controllers/Calendars/EventController.php index becc89cc0b..16c905f036 100644 --- a/app/Http/Controllers/Calendars/EventController.php +++ b/app/Http/Controllers/Calendars/EventController.php @@ -16,6 +16,7 @@ use App\Traits\Controllers\HasSubview; use App\Traits\GuestAuthTrait; use Exception; +use Illuminate\Support\Str; class EventController extends Controller { @@ -77,9 +78,9 @@ public function create(Campaign $campaign, Calendar $calendar) { $this->authorize('update', $calendar); - $date = request()->get('date'); + $date = request()->get('date', '1-1-1'); list($year, $month, $day) = explode('-', $date); - if (str_starts_with($date, '-')) { + if (Str::startsWith($date, '-')) { list($year, $month, $day) = explode('-', trim($date, '-')); $year = "-{$year}"; } diff --git a/app/Http/Controllers/Campaign/ImportController.php b/app/Http/Controllers/Campaign/ImportController.php index 4c21a85c35..89a14df037 100644 --- a/app/Http/Controllers/Campaign/ImportController.php +++ b/app/Http/Controllers/Campaign/ImportController.php @@ -24,6 +24,7 @@ public function index(Campaign $campaign) Datagrid::layout(\App\Renderers\Layouts\Campaign\CampaignImport::class); + // @phpstan-ignore-next-line $rows = $campaign->campaignImports() ->sort(request()->only(['o', 'k'])) ->where('status_id', '<>', CampaignImportStatus::PREPARED) diff --git a/app/Http/Controllers/Campaign/RoleUserController.php b/app/Http/Controllers/Campaign/RoleUserController.php index dc569ef37b..a93cef6edf 100644 --- a/app/Http/Controllers/Campaign/RoleUserController.php +++ b/app/Http/Controllers/Campaign/RoleUserController.php @@ -16,11 +16,6 @@ class RoleUserController extends Controller protected MemberService $service; - /** - * Create a new controller instance. - * - * @return void - */ public function __construct(MemberService $service) { $this->middleware('auth'); @@ -34,10 +29,6 @@ public function index(Campaign $campaign) return redirect()->route('campaign_roles.index', $campaign); } - /** - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function create(Campaign $campaign, CampaignRole $campaignRole) { $this->authorize('roles', $campaign); @@ -46,10 +37,6 @@ public function create(Campaign $campaign, CampaignRole $campaignRole) return view($this->view . '.create', ['campaign' => $campaign, 'role' => $campaignRole]); } - /** - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function store(StoreCampaignRoleUser $request, Campaign $campaign, CampaignRole $campaignRole) { $this->authorize('roles', $campaign); @@ -69,19 +56,12 @@ public function store(StoreCampaignRoleUser $request, Campaign $campaign, Campai ])); } - /** - * @return \Illuminate\Http\RedirectResponse - */ public function show(Campaign $campaign, CampaignRole $campaignRole, CampaignRoleUser $campaignRoleUser) { return redirect() ->route('campaign_roles.show', [$campaign, $campaignRole]); } - /** - * @return \Illuminate\Http\RedirectResponse - * @throws \Illuminate\Auth\Access\AuthorizationException - */ public function destroy(Campaign $campaign, CampaignRole $campaignRole, CampaignRoleUser $campaignRoleUser) { $this->authorize('roles', $campaign); diff --git a/app/Http/Controllers/Campaign/UserController.php b/app/Http/Controllers/Campaign/UserController.php index 7a1d2a9c2f..4f9d956994 100644 --- a/app/Http/Controllers/Campaign/UserController.php +++ b/app/Http/Controllers/Campaign/UserController.php @@ -36,7 +36,7 @@ public function index(Campaign $campaign) $this->rows = $campaign ->members() ->sort(request()->only(['o', 'k']), ['id' => 'desc']) - ->with(['user', 'campaign', 'user.campaignRoles', 'user.campaignRoleUser']) + ->with(['user', 'campaign', 'user.campaignRoles', 'user.campaignRoleUser', 'user.tutorials']) ->paginate(); $invitations = $campaign diff --git a/app/Http/Controllers/CrudController.php b/app/Http/Controllers/CrudController.php index faeec785ae..f5472fa9d5 100644 --- a/app/Http/Controllers/CrudController.php +++ b/app/Http/Controllers/CrudController.php @@ -36,58 +36,53 @@ class CrudController extends Controller use HasDatagrid; use HasSubview; - /** @var string The view where to find the resources */ + /** The view where to find the resources */ protected string $view = ''; - /** @var string The name of the route for the resource */ + /** The name of the route for the resource */ protected string $route = ''; /** @var MiscModel|Model|string|null */ - protected $model = null; + protected $model; protected string $filter; - /** @var FilterService */ - protected $filterService; + /** */ + protected FilterService $filterService; - /** @var bool If the permissions tab and pane is enabled or not. */ + /** If the permissions tab and pane is enabled or not. */ protected bool $tabPermissions = true; - /** @var bool If the attributes tab and pane is enabled or not */ + /** If the attributes tab and pane is enabled or not */ protected bool $tabAttributes = true; - /** @var bool If the copy tab and pane is enabled or not */ + /** If the copy tab and pane is enabled or not */ protected bool $tabCopy = true; - /** @var bool If the boosted tab and pane is enabled or not */ + /** If the boosted tab and pane is enabled or not */ protected bool $tabBoosted = true; - /** @var array List of navigation actions on top of the datagrids */ + /** List of navigation actions on top of the datagrids */ protected array $navActions = []; - /** @var string Make the request play nice with the model */ + /** Make the request play nice with the model */ protected string $sanitizer = MiscSanitizer::class; /** * A sorter object for subviews * @var null|DatagridSorter */ - protected $datagridSorter = null; + protected DatagridSorter $datagridSorter; - /** @var bool If the auth check was already performed on this controller */ + /** If the auth check was already performed on this controller */ protected bool $alreadyAuthChecked = false; - /** @var string The datagrid actions, set to null to disable */ + /** The datagrid actions, set to null to disable */ protected string $datagridActions = DefaultDatagridActions::class; - /** @var bool Determine if the create/store procedure has a limit checking in place */ + /** Determine if the create/store procedure has a limit checking in place */ protected bool $hasLimitCheck = false; - /** - * Create a new controller instance. - * - * @return void - */ public function __construct() { $this->middleware('campaign.member'); @@ -222,8 +217,8 @@ public function crudIndex(Request $request) 'entityTypeId', 'singular', ); - if (!empty($this->titleKey)) { - $data['titleKey'] = $this->titleKey; + if (method_exists($this, 'titleKey')) { + $data['titleKey'] = $this->titleKey(); } else { $data['titleKey'] = Module::plural($entityTypeId, __('entities.' . $langKey)); } diff --git a/app/Http/Controllers/Entity/AbilityController.php b/app/Http/Controllers/Entity/AbilityController.php index 4d83780e30..467bb28c47 100644 --- a/app/Http/Controllers/Entity/AbilityController.php +++ b/app/Http/Controllers/Entity/AbilityController.php @@ -103,6 +103,9 @@ public function edit(Campaign $campaign, Entity $entity, EntityAbility $entityAb { $this->authorize('update', $entity->child); $ability = $entityAbility; + if (empty($ability->ability)) { + abort(403); + } return view('entities.pages.abilities.update', compact( 'campaign', diff --git a/app/Http/Controllers/Families/Trees/ApiController.php b/app/Http/Controllers/Families/Trees/ApiController.php index 1230b7aa31..0ee6a92d05 100644 --- a/app/Http/Controllers/Families/Trees/ApiController.php +++ b/app/Http/Controllers/Families/Trees/ApiController.php @@ -62,7 +62,8 @@ public function entity(Campaign $campaign, Entity $entity): JsonResponse */ public function save(Request $request, Campaign $campaign, Family $family): JsonResponse { - //dd($request->get('data')); + $this->authorize('update', $family); + return response()->json( $this ->service diff --git a/app/Http/Controllers/RelationController.php b/app/Http/Controllers/RelationController.php index 40a2d71ab3..f79ffa119c 100644 --- a/app/Http/Controllers/RelationController.php +++ b/app/Http/Controllers/RelationController.php @@ -34,20 +34,21 @@ class RelationController extends CrudController /** @var string Disable the sanitizer, handled by the observer */ protected string $sanitizer = ''; - /** */ protected string $filter = RelationFilter::class; - public string $titleKey; public function __construct(RelationService $relationService) { parent::__construct(); $this->middleware('auth'); - - $this->titleKey = __('sidebar.relations'); $this->relationService = $relationService; } + public function titleKey(): string + { + return __('sidebar.relations'); + } + /** * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response * @throws \Illuminate\Auth\Access\AuthorizationException diff --git a/app/Http/Controllers/Search/GameSystemSearchController.php b/app/Http/Controllers/Search/GameSystemSearchController.php index 7fccf2e2e3..3ed6a63c37 100644 --- a/app/Http/Controllers/Search/GameSystemSearchController.php +++ b/app/Http/Controllers/Search/GameSystemSearchController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Search; use App\Http\Controllers\Controller; -use App\Models\Campaign; use Illuminate\Http\JsonResponse; use App\Models\GameSystem; @@ -15,11 +14,12 @@ class GameSystemSearchController extends Controller /** * Get a user's recent searches */ - public function index(Campaign $campaign): JsonResponse + public function index(): JsonResponse { /** @var GameSystem[] $systems */ $systems = GameSystem::where('name', 'like', '%' . request()->get('q') . '%') - ->withCount('campaignSystem')->orderBy('campaign_system_count', 'desc') + ->withCount('campaignSystem') + ->orderBy('campaign_system_count', 'desc') ->orderBy('name', 'asc') ->limit(20) ->get(); @@ -33,6 +33,15 @@ public function index(Campaign $campaign): JsonResponse $formatted[] = $format; } + // Add Other if it's empty + if (empty($formatted)) { + $other = GameSystem::where('name', 'Other')->first(); + $formatted[] = [ + 'id' => $other->id, + 'text' => __('sidebar.other') + ]; + } + return response()->json( $formatted ?? [] ); diff --git a/app/Http/Resources/CreatureResource.php b/app/Http/Resources/CreatureResource.php index aec6231e31..8c4fc0c778 100644 --- a/app/Http/Resources/CreatureResource.php +++ b/app/Http/Resources/CreatureResource.php @@ -21,6 +21,7 @@ public function toArray($request) return $this->entity([ 'type' => $model->type, 'creature_id' => $model->creature_id, + 'is_extinct' => (bool) $model->is_extinct, 'locations' => $locationIDs ]); } diff --git a/app/Jobs/Campaigns/Import.php b/app/Jobs/Campaigns/Import.php index 26a57cd2dd..025bf2c25d 100644 --- a/app/Jobs/Campaigns/Import.php +++ b/app/Jobs/Campaigns/Import.php @@ -72,5 +72,16 @@ public function handle() */ public function failed(Throwable $exception) { + $job = CampaignImport::find($this->jobID); + if (!$job) { + Log::info('Campaign import', ['empty', 'id' => $this->jobID]); + return 0; + } + + /** @var ImportService $service */ + $service = app()->make(ImportService::class); + $service + ->job($job) + ->fail($exception); } } diff --git a/app/Jobs/Discord/SendNewFeature.php b/app/Jobs/Discord/SendNewFeature.php new file mode 100644 index 0000000000..37fb053f9e --- /dev/null +++ b/app/Jobs/Discord/SendNewFeature.php @@ -0,0 +1,76 @@ +feature = $feature; + } + + /** + * Execute the job. + * + */ + public function handle(): void + { + /** @var Feature|null $feature */ + $feature = Feature::find($this->feature); + if (empty($feature)) { + // Feature wasn't found + Log::warning('Jobs/Discord/SendNewFeature', ['unknown feature', 'feature' => $this->feature]); + return; + } + + $webhook = config('discord.webhooks.features'); + if (empty($webhook)) { + Log::warning('Jobs/Discord/SendNewFeature', ['no webhook defined']); + return; + } + Log::info('Jobs/Discord/SendNewFeature', ['start', 'feature' => $feature->id]); + + $title = $feature->name; + $content = 'A new idea has been approved and can be voted on!'; + + Http::post(config('discord.webhooks.features'), [ + 'content' => $content, + 'embeds' => [ + [ + 'title' => $title, + 'description' => strip_tags($feature->description), + 'color' => config('discord.color'), + 'url' => route('roadmap', ['status' => 'ideas', 'idea' => $feature->id]), + 'author' => [ + 'name' => $feature->user->name, + 'url' => route('users.profile', $feature->created_by), + 'icon' => $feature->user->getAvatarUrl(), + ] + ] + ], + ]); + + } +} diff --git a/app/Livewire/Roadmap/Form.php b/app/Livewire/Roadmap/Form.php index 8a4219d809..826f97bb0c 100644 --- a/app/Livewire/Roadmap/Form.php +++ b/app/Livewire/Roadmap/Form.php @@ -4,11 +4,18 @@ use App\Enums\FeatureStatus; use App\Models\Feature; +use App\Models\FeatureFile; use Livewire\Attributes\Validate; use Livewire\Component; +use Livewire\WithFileUploads; class Form extends Component { + use WithFileUploads; + + #[Validate('image|nullable|max:3072')] // 3MB Max + public $file; + #[Validate('required|min:5')] public string $title = ''; @@ -31,6 +38,14 @@ public function save() $feat->status_id = FeatureStatus::Draft; $feat->save(); + if ($this->file) { + $file = $this->file->storeAs('features/' . $feat->id, uniqid() . '.' . $this->file->getClientOriginalExtension(), 's3'); + $featFile = new FeatureFile(); + $featFile->feature_id = $feat->id; + $featFile->path = $file; + $featFile->save(); + } + $this->success = true; $this->title = ''; $this->description = ''; diff --git a/app/Models/AttributeTemplate.php b/app/Models/AttributeTemplate.php index c3822aa3f2..6201802ad1 100644 --- a/app/Models/AttributeTemplate.php +++ b/app/Models/AttributeTemplate.php @@ -7,6 +7,8 @@ use App\Services\Attributes\RandomService; use App\Traits\CampaignTrait; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Staudenmeir\LaravelAdjacencyList\Eloquent\HasRecursiveRelationships; @@ -67,29 +69,17 @@ class AttributeTemplate extends MiscModel /** @var bool Attribute templates don't have inventory, relations or abilities */ public $hasRelations = false; - /** - * Parent - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function attributeTemplate() + public function attributeTemplate(): BelongsTo { return $this->belongsTo('App\Models\AttributeTemplate', 'attribute_template_id', 'id'); } - /** - * Parent - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function entityType() + public function entityType(): BelongsTo { return $this->belongsTo('App\Models\EntityType', 'entity_type_id', 'id'); } - /** - * Children - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function attributeTemplates() + public function attributeTemplates(): HasMany { return $this->hasMany('App\Models\AttributeTemplate', 'attribute_template_id', 'id'); } @@ -133,10 +123,9 @@ public function scopePreparedWith(Builder $query): Builder /** * Apply a template to an entity - * @param int $startingOrder - * @return int + * todo: move to service */ - public function apply(Entity $entity, $startingOrder = 0) + public function apply(Entity $entity, int $startingOrder = 0): int { $order = $startingOrder; $existing = array_values($entity->attributes()->pluck('name')->toArray()); diff --git a/app/Models/Bookmark.php b/app/Models/Bookmark.php index 338c763472..7613857171 100644 --- a/app/Models/Bookmark.php +++ b/app/Models/Bookmark.php @@ -337,6 +337,7 @@ public function randomEntity() /** @var Entity|null $entity */ $entity = Entity::inTags($this->tags->pluck('id')->toArray()) + ->whereNotIn('entities.id', Dashboard::excluding()) ->type($entityTypeID) ->inRandomOrder() ->first(); diff --git a/app/Models/Campaign.php b/app/Models/Campaign.php index dc5abf31d4..13244e1989 100644 --- a/app/Models/Campaign.php +++ b/app/Models/Campaign.php @@ -42,6 +42,7 @@ * @property array $ui_settings * @property boolean $is_open * @property boolean $is_featured + * @property boolean $is_discreet * @property Carbon $featured_until * @property string $featured_reason * @property array|null $default_images @@ -98,6 +99,7 @@ class Campaign extends Model 'ui_settings', 'settings', 'is_open', + 'is_discreet', ]; protected $casts = [ @@ -157,7 +159,12 @@ public function membersList($removedIds = []): array public function admins() { $users = []; - foreach ($this->roles()->with(['users', 'users.user'])->where('is_admin', '1')->get() as $role) { + // @phpstan-ignore-next-line + $roles = $this->roles() + ->with(['users', 'users.user']) + ->where('is_admin', '1') + ->get(); + foreach ($roles as $role) { foreach ($role->users as $user) { if (!isset($users[$user->id])) { $users[$user->user->id] = $user->user; @@ -227,6 +234,15 @@ public function isPublic(): bool { return $this->visibility_id == self::VISIBILITY_PUBLIC; } + + /** + * Determine if a campaign is discreet + */ + public function isDiscreet(): bool + { + return $this->is_discreet; + } + /** * * Determine if a campaign is open to submissions diff --git a/app/Models/CampaignDashboardRole.php b/app/Models/CampaignDashboardRole.php index c41e39b492..bad132f269 100644 --- a/app/Models/CampaignDashboardRole.php +++ b/app/Models/CampaignDashboardRole.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; /** * Class CampaignDashboardRole @@ -26,12 +27,12 @@ class CampaignDashboardRole extends Model 'campaign_dashboard_id' ]; - public function role() + public function role(): BelongsTo { return $this->belongsTo(CampaignRole::class, 'campaign_role_id', 'id'); } - public function dashboard() + public function dashboard(): BelongsTo { return $this->belongsTo(CampaignDashboard::class, 'campaign_dashboard_id', 'id'); } diff --git a/app/Models/CampaignDashboardWidget.php b/app/Models/CampaignDashboardWidget.php index d2307cba80..35163d8da5 100644 --- a/app/Models/CampaignDashboardWidget.php +++ b/app/Models/CampaignDashboardWidget.php @@ -303,7 +303,10 @@ public function entities(int $page = 1) public function randomEntity() { $entityType = $this->conf('entity'); - $entityTypeID = (int) config('entities.ids.' . $entityType); + $entityTypeID = null; + if (!empty($entityType)) { + $entityTypeID = (int) config('entities.ids.' . $entityType); + } $base = new Entity(); diff --git a/app/Models/CampaignImport.php b/app/Models/CampaignImport.php index 67d8ad3341..32c02950b9 100644 --- a/app/Models/CampaignImport.php +++ b/app/Models/CampaignImport.php @@ -13,6 +13,7 @@ /** * @property int $id + * @property array $config * @property CampaignImportStatus $status_id * @property Campaign $campaign * @property User $user diff --git a/app/Models/Concerns/TreeQueryBuilder.php b/app/Models/Concerns/TreeQueryBuilder.php deleted file mode 100644 index a8c63084e0..0000000000 --- a/app/Models/Concerns/TreeQueryBuilder.php +++ /dev/null @@ -1,31 +0,0 @@ -model->getKeyName(), - $this->model->getParentIdName(), - $this->model->getLftName(), - $this->model->getRgtName(), - ]; - - $dictionary = $this->model - ->newNestedSetQuery() - ->when($root, function (self $query) use ($root) { - return $query->whereDescendantOf($root); - }) - ->where('campaign_id', $campaign) - ->defaultOrder() - ->get($columns) - ->groupBy($this->model->getParentIdName()) - ->all(); - - return $this->fixNodes($dictionary, $root); - } -} diff --git a/app/Models/Creature.php b/app/Models/Creature.php index c43cc51742..3f1698461d 100644 --- a/app/Models/Creature.php +++ b/app/Models/Creature.php @@ -26,6 +26,7 @@ * @property Creature[] $creatures * @property Location|null $location * @property Collection|Location[] $locations + * @property bool $is_extinct */ class Creature extends MiscModel { @@ -47,6 +48,7 @@ class Creature extends MiscModel 'entry', 'is_private', 'creature_id', + 'is_extinct', ]; /** @@ -56,12 +58,14 @@ class Creature extends MiscModel protected array $sortableColumns = [ 'creature.name', + 'is_extinct', ]; protected array $sortable = [ 'name', 'type', 'creature.name', + 'is_extinct', ]; /** @@ -79,6 +83,11 @@ class Creature extends MiscModel 'pivotLocations', ]; + protected array $exportFields = [ + 'base', + 'is_extinct', + ]; + /** * @return string */ @@ -151,7 +160,7 @@ public function scopeLocation(Builder $query, int|null $location, FilterOption $ */ public function datagridSelectFields(): array { - return ['creature_id']; + return ['creature_id', 'is_extinct']; } /** @@ -202,7 +211,8 @@ public function filterableColumns(): array { return [ 'creature_id', - 'location_id' + 'location_id', + 'is_extinct', ]; } @@ -230,4 +240,12 @@ public function showProfileInfo(): bool return parent::showProfileInfo(); } + + /** + * Determine if the model is extinct. + */ + public function isExtinct(): bool + { + return (bool) $this->is_extinct; + } } diff --git a/app/Models/EntityEvent.php b/app/Models/EntityEvent.php index 0c319e823c..f1a188067d 100644 --- a/app/Models/EntityEvent.php +++ b/app/Models/EntityEvent.php @@ -568,6 +568,14 @@ public function death() return $this->hasOne(EntityEvent::class, 'entity_id', 'entity_id')->whereColumn('calendar_id', 'entity_events.calendar_id')->where('type_id', EntityEventType::DEATH); } + /** + * Patch an entity from the datagrid2 batch editing + */ + public function patch(array $data): bool + { + return $this->updateQuietly($data); + } + public function exportFields(): array { return [ diff --git a/app/Models/Feature.php b/app/Models/Feature.php index 77dfb4b919..464b16402f 100644 --- a/app/Models/Feature.php +++ b/app/Models/Feature.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; /** @@ -52,6 +53,11 @@ public function uservote(): HasOne ->where('user_id', auth()->user()->id); } + public function featureFiles(): HasMany + { + return $this->hasMany(FeatureFile::class, 'feature_id', 'id'); + } + public function scopeApproved(Builder $builder): Builder { return $builder->whereIn('status_id', [\App\Enums\FeatureStatus::Approved]) diff --git a/app/Models/FeatureFile.php b/app/Models/FeatureFile.php new file mode 100644 index 0000000000..3663a6a85a --- /dev/null +++ b/app/Models/FeatureFile.php @@ -0,0 +1,25 @@ +belongsTo(Feature::class, 'feature_id'); + } +} diff --git a/app/Models/Image.php b/app/Models/Image.php index 8d3fc56f3e..b11f26a9c0 100644 --- a/app/Models/Image.php +++ b/app/Models/Image.php @@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Facades\Storage; /** @@ -69,7 +71,7 @@ class Image extends Model ]; /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + * @return BelongsTo */ public function user() { @@ -77,24 +79,23 @@ public function user() } /** - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function campaign() + public function campaign(): BelongsTo { return $this->belongsTo(Campaign::class); } - public function imageFolder() + public function imageFolder(): BelongsTo { return $this->belongsTo(Image::class, 'folder_id', 'id'); } - public function images() + public function images(): HasMany { return $this->hasMany(Image::class, 'folder_id', 'id'); } - public function folders() + public function folders(): HasMany { return $this->hasMany(Image::class, 'folder_id', 'id') ->where('is_folder', true); diff --git a/app/Models/Journal.php b/app/Models/Journal.php index 156f091882..4663801aed 100644 --- a/app/Models/Journal.php +++ b/app/Models/Journal.php @@ -113,6 +113,8 @@ public function scopePreparedWith(Builder $query): Builder $sub->select('campaign_id', 'id', 'ext', 'focus_x', 'focus_y'); }, 'entity.calendarDate', + 'entity.calendarDate.calendar', + 'entity.calendarDate.calendar.entity', 'author', 'location' => function ($sub) { $sub->select('id', 'name'); diff --git a/app/Models/Quest.php b/app/Models/Quest.php index b6c21764a4..85a32292f6 100644 --- a/app/Models/Quest.php +++ b/app/Models/Quest.php @@ -115,8 +115,9 @@ public function scopePreparedWith(Builder $query): Builder return $query->with([ 'entity', 'entity.image', - 'entity.calendarDateEvents', 'entity.calendarDate', + 'entity.calendarDate.calendar', + 'entity.calendarDate.calendar.entity', 'quests', 'instigator', //'elements', diff --git a/app/Models/Relations/CampaignRelations.php b/app/Models/Relations/CampaignRelations.php index e97723df19..7b93eb2d28 100644 --- a/app/Models/Relations/CampaignRelations.php +++ b/app/Models/Relations/CampaignRelations.php @@ -210,10 +210,7 @@ public function creatures(): HasMany return $this->hasMany(Creature::class); } - /** - * @return mixed|Image - */ - public function images(): HasMany + public function images(): HasMany|Image { return $this->hasMany(Image::class) ->where('is_default', false); @@ -249,7 +246,7 @@ public function entityRelations(): HasMany /** */ - public function plugins() + public function plugins(): BelongsToMany { return $this->belongsToMany('App\Models\Plugin', 'campaign_plugins', 'campaign_id', 'plugin_id') //->using('App\Models\CampaignPlugin') @@ -296,7 +293,7 @@ public function styles(): HasMany /** */ - public function editingUsers() + public function editingUsers(): BelongsToMany { return $this->belongsToMany(User::class, 'entity_user') ->using(EntityUser::class) diff --git a/app/Models/Scopes/CampaignScopes.php b/app/Models/Scopes/CampaignScopes.php index 272420fdc9..f5be9d4011 100644 --- a/app/Models/Scopes/CampaignScopes.php +++ b/app/Models/Scopes/CampaignScopes.php @@ -89,6 +89,14 @@ public function scopeOpen(Builder $query, bool $open = true): Builder return $query->where('is_open', $open); } + + /** + */ + public function scopeDiscreet(Builder $query, bool $discreet = true): Builder + { + return $query->where('is_discreet', $discreet); + } + /** * Admin crud datagrid */ diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 95af42872f..4b4d7f5adb 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -286,7 +286,7 @@ public function attachEntities(array $entityIds): int public function html(): string { return '' - . e($this->name) . ''; + . $this->name . ''; } /** diff --git a/app/Models/Tier.php b/app/Models/Tier.php index 0ae849eee2..39292d8832 100644 --- a/app/Models/Tier.php +++ b/app/Models/Tier.php @@ -64,27 +64,19 @@ public function isCurrent(User $user): bool public function monthlyPlans(): array { - return [ - config('subscription.' . $this->code . '.eur.monthly'), - config('subscription.' . $this->code . '.usd.monthly') - ]; + return config('subscription.' . $this->code . '.monthly'); } public function yearlyPlans(): array { - return [ - config('subscription.' . $this->code . '.eur.yearly'), - config('subscription.' . $this->code . '.usd.yearly') - ]; + return config('subscription.' . $this->code . '.yearly'); } public function plans(): array { - return [ - config('subscription.' . $this->code . '.eur.monthly'), - config('subscription.' . $this->code . '.usd.monthly'), - config('subscription.' . $this->code . '.eur.yearly'), - config('subscription.' . $this->code . '.usd.yearly'), - ]; + return array_merge( + config('subscription.' . $this->code . '.monthly'), + config('subscription.' . $this->code . '.yearly'), + ); } } diff --git a/app/Observers/CampaignObserver.php b/app/Observers/CampaignObserver.php index 95f36278be..268c13530c 100644 --- a/app/Observers/CampaignObserver.php +++ b/app/Observers/CampaignObserver.php @@ -234,7 +234,6 @@ protected function saveSystems(Campaign $campaign) $ids = request()->post('systems', []); $existing = []; - /** @var GameSystems $systems */ foreach ($campaign->systems as $system) { $existing[$system->id] = $system->name; } diff --git a/app/Observers/Remindable.php b/app/Observers/Remindable.php index 38ee2cfddc..cbd3e4cae8 100644 --- a/app/Observers/Remindable.php +++ b/app/Observers/Remindable.php @@ -63,7 +63,7 @@ public function saved(Model $model) $reminder->month = (int) request()->post('calendar_month', '1'); $reminder->day = (int) request()->post('calendar_day', '1'); $reminder->length = $length; - $reminder->is_recurring = request()->post('calendar_is_recurring', 0); + $reminder->is_recurring = (bool) request()->post('calendar_is_recurring'); $reminder->recurring_periodicity = request()->post('calendar_recurring_periodicity'); $reminder->colour = request()->post('calendar_colour', '#cccccc'); $reminder->type_id = EntityEventType::CALENDAR_DATE; diff --git a/app/Policies/FeaturePolicy.php b/app/Policies/FeaturePolicy.php index 6100207d99..3bc6ff92b7 100644 --- a/app/Policies/FeaturePolicy.php +++ b/app/Policies/FeaturePolicy.php @@ -18,6 +18,10 @@ public function __construct() public function create(User $user): bool { + // Admins can create unlimited ideas + if ($user->hasRole('admin')) { + return true; + } return Feature::where('created_by', auth()->user()->id) ->whereDate('created_at', Carbon::today()) ->count() < 10; diff --git a/app/Renderers/DatagridRenderer.php b/app/Renderers/DatagridRenderer.php index 17e138b343..3435119b6e 100644 --- a/app/Renderers/DatagridRenderer.php +++ b/app/Renderers/DatagridRenderer.php @@ -362,11 +362,6 @@ private function renderColumn(string|array $column, $model) } $class = !empty($column['parent']) ? $this->hidden : $class; if (!empty($who)) { - $whoRoute = !empty($column['parent_route']) - ? (is_string($column['parent_route']) - ? $column['parent_route'] - : $column['parent_route']($model)) - : $this->getOption('baseRoute'); $route = $who->getLink(); $content = ''; @@ -404,19 +399,20 @@ private function renderColumn(string|array $column, $model) null; $class = ' text-center'; } elseif ($type == 'calendar_date') { - $class = $this->hidden; + $class = $this->hidden . ' col-calendar-date'; /** @var Journal $model */ - if ($model->entity->calendarDate) { - $reminder = $model->entity->calendarDate; - if (!$reminder->calendar || !$reminder->calendar->entity) { - return null; - } - $content = link_to_route( - 'entities.show', - $reminder->readableDate(), - [$this->campaign, $reminder->calendar->entity, 'month' => $reminder->month, 'year' => $reminder->year] - ); + if (!$model->entity->calendarDate) { + return null; } + $reminder = $model->entity->calendarDate; + if (!$reminder->calendar || !$reminder->calendar->entity) { + return null; + } + $content = link_to_route( + 'entities.show', + $reminder->readableDate(), + [$this->campaign, $reminder->calendar->entity, 'month' => $reminder->month, 'year' => $reminder->year] + ); } else { // Exception $content = 'ERR_UNKNOWN_TYPE'; diff --git a/app/Renderers/Layouts/Calendar/Reminder.php b/app/Renderers/Layouts/Calendar/Reminder.php index dbb92178db..514ca04613 100644 --- a/app/Renderers/Layouts/Calendar/Reminder.php +++ b/app/Renderers/Layouts/Calendar/Reminder.php @@ -73,4 +73,12 @@ public function actions(): array self::ACTION_DELETE ]; } + + public function bulks(): array + { + return [ + self::ACTION_EDIT, + self::ACTION_DELETE, + ]; + } } diff --git a/app/Services/Api/CampaignService.php b/app/Services/Api/CampaignService.php index 29fae133b0..23941b5d0b 100644 --- a/app/Services/Api/CampaignService.php +++ b/app/Services/Api/CampaignService.php @@ -91,7 +91,7 @@ protected function featured(): self { $this->data['featured'] = []; - $campaigns = Campaign::public()->front()->featured()->get(); + $campaigns = Campaign::public()->front()->featured()->discreet(false)->get(); foreach ($campaigns as $campaign) { $this->data['featured'][] = new CampaignResource($campaign); } @@ -112,6 +112,7 @@ protected function campaigns(): self ->front((int)$this->request->get('sort_field_name')) ->featured(false) ->filterPublic($this->request->only(['language', 'system', 'is_boosted', 'is_open', 'genre'])) + ->discreet(false) ->paginate(); $this->data['campaigns'] = CampaignResource::collection($campaigns); } diff --git a/app/Services/Caches/CampaignCacheService.php b/app/Services/Caches/CampaignCacheService.php index a7ff194102..a2d9d74e0b 100644 --- a/app/Services/Caches/CampaignCacheService.php +++ b/app/Services/Caches/CampaignCacheService.php @@ -61,7 +61,10 @@ public function systems(): array return $this->get($key); } $data = []; - $systems = GameSystem::withCount('campaignSystem')->orderBy('campaign_system_count', 'desc')->get(20); + $systems = GameSystem::withCount('campaignSystem') + ->orderBy('campaign_system_count', 'desc') + ->limit(20) + ->get(); foreach ($systems as $system) { $data[$system->id] = $system->name; diff --git a/app/Services/Campaign/BoostService.php b/app/Services/Campaign/BoostService.php index 99a521aec7..ef985e5619 100644 --- a/app/Services/Campaign/BoostService.php +++ b/app/Services/Campaign/BoostService.php @@ -121,8 +121,10 @@ public function unboost(CampaignBoost $campaignBoost): self } $this->user->log(UserLog::TYPE_CAMPAIGN_UNBOOST); } + $boostCount = $this->campaign->boosts()->count(); + $this->campaign->boost_count = $boostCount; + $this->campaign->is_discreet = false; - $this->campaign->boost_count = $this->campaign->boosts()->count(); $this->campaign->saveQuietly(); if (isset($this->user)) { diff --git a/app/Services/Campaign/GalleryService.php b/app/Services/Campaign/GalleryService.php index 87d8dc3b11..d96ba585ab 100644 --- a/app/Services/Campaign/GalleryService.php +++ b/app/Services/Campaign/GalleryService.php @@ -210,7 +210,9 @@ public function folderList(): array $this->folders = ['' => __('campaigns/gallery.no_folder')]; /** @var Image[] $rootFolders */ - $rootFolders = $this->campaign->images()->folders()->whereNull('folder_id') + $rootFolders = $this->campaign->images() + ->folders() + ->whereNull('folder_id') ->with('folders') ->select(['id', 'name']) ->orderBy('name') diff --git a/app/Services/Campaign/Import/ImportService.php b/app/Services/Campaign/Import/ImportService.php index b4595e1229..b5fac69339 100644 --- a/app/Services/Campaign/Import/ImportService.php +++ b/app/Services/Campaign/Import/ImportService.php @@ -31,6 +31,7 @@ use Illuminate\Support\Str; use ZipArchive; use Exception; +use Throwable; class ImportService { @@ -74,6 +75,7 @@ public function run(): void ->mappers() ->download() ->process() + ->finish() ->cleanup(); } @@ -158,8 +160,9 @@ protected function process() ; $this->job->status_id = CampaignImportStatus::FINISHED; } catch (Exception $e) { - dump($e->getMessage()); - dump($e->getTrace()); + //dump($e->getMessage()); + //dump($e->getTrace()); + $this->logs[] = $e->getMessage(); Log::error('Import', ['error' => $e->getMessage()]); $this->job->status_id = CampaignImportStatus::FAILED; } @@ -167,9 +170,10 @@ protected function process() return $this; } - protected function cleanup(): self + protected function finish(): self { Storage::disk('local')->deleteDirectory($this->dataPath); + $config = $this->job->config; $config['logs'] = $this->logs; $this->job->config = $config; @@ -358,4 +362,27 @@ protected function secondCampaign(): self $this->entityMappingService->silent()->mapCampaign($this->campaign); return $this; } + + protected function cleanup(): self + { + $files = $this->job->config['files']; + foreach ($files as $file) { + Storage::disk('s3')->delete($file); + } + return $this; + } + + public function fail(Throwable $e): self + { + $config = $this->job->config; + if (!isset($config['logs'])) { + $config['logs'] = []; + } + $config['logs'][] = $e->getMessage(); + $this->job->config = $config; + $this->job->status_id = CampaignImportStatus::FAILED; + $this->job->save(); + + return $this->cleanup(); + } } diff --git a/app/Services/Campaign/Import/Mappers/FamilyMapper.php b/app/Services/Campaign/Import/Mappers/FamilyMapper.php index 1e5d7f3352..552e18622c 100644 --- a/app/Services/Campaign/Import/Mappers/FamilyMapper.php +++ b/app/Services/Campaign/Import/Mappers/FamilyMapper.php @@ -6,7 +6,7 @@ class FamilyMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'family_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'family_id', 'created_at', 'updated_at', 'location_id']; protected string $className = Family::class; protected string $mappingName = 'families'; diff --git a/app/Services/Campaign/Import/Mappers/ItemMapper.php b/app/Services/Campaign/Import/Mappers/ItemMapper.php index 3779e66ee1..4caeb767d3 100644 --- a/app/Services/Campaign/Import/Mappers/ItemMapper.php +++ b/app/Services/Campaign/Import/Mappers/ItemMapper.php @@ -6,7 +6,7 @@ class ItemMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'item_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'item_id', 'character_id', 'created_at', 'updated_at']; protected string $className = Item::class; protected string $mappingName = 'items'; diff --git a/app/Services/Campaign/Import/Mappers/JournalMapper.php b/app/Services/Campaign/Import/Mappers/JournalMapper.php index 3f11c21a37..b8bf29ef20 100644 --- a/app/Services/Campaign/Import/Mappers/JournalMapper.php +++ b/app/Services/Campaign/Import/Mappers/JournalMapper.php @@ -6,7 +6,7 @@ class JournalMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'journal_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'journal_id', 'location_id', 'author_id', 'created_at', 'updated_at']; protected string $className = Journal::class; protected string $mappingName = 'journals'; diff --git a/app/Services/Campaign/Import/Mappers/MapMapper.php b/app/Services/Campaign/Import/Mappers/MapMapper.php index 50b392e081..c40d95b201 100644 --- a/app/Services/Campaign/Import/Mappers/MapMapper.php +++ b/app/Services/Campaign/Import/Mappers/MapMapper.php @@ -13,7 +13,7 @@ class MapMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'map_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'map_id', 'created_at', 'updated_at', 'location_id']; protected string $className = Map::class; protected string $mappingName = 'maps'; @@ -32,6 +32,7 @@ public function second(): void { // @phpstan-ignore-next-line $this->loadModel() + ->foreign('locations', 'location_id') ->groups() ->layers() ->markers() @@ -79,7 +80,7 @@ protected function groups(): self protected function layers(): self { $fields = [ - 'name', 'position', 'image', 'height', 'width', 'entry', 'visibility_id', 'is_shown', 'type_id' + 'name', 'position', 'image', 'height', 'width', 'entry', 'visibility_id', 'type_id' ]; $this->layers = []; foreach ($this->data['layers'] as $data) { diff --git a/app/Services/Campaign/Import/Mappers/OrganisationMapper.php b/app/Services/Campaign/Import/Mappers/OrganisationMapper.php index f323b1f90a..2e7f852598 100644 --- a/app/Services/Campaign/Import/Mappers/OrganisationMapper.php +++ b/app/Services/Campaign/Import/Mappers/OrganisationMapper.php @@ -6,7 +6,7 @@ class OrganisationMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'organisation_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'organisation_id', 'location_id', 'created_at', 'updated_at']; protected string $className = Organisation::class; protected string $mappingName = 'organisations'; diff --git a/app/Services/Campaign/Import/Mappers/QuestMapper.php b/app/Services/Campaign/Import/Mappers/QuestMapper.php index 662d5eb76d..d6c6801873 100644 --- a/app/Services/Campaign/Import/Mappers/QuestMapper.php +++ b/app/Services/Campaign/Import/Mappers/QuestMapper.php @@ -8,7 +8,7 @@ class QuestMapper extends MiscMapper { - protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'quest_id', 'created_at', 'updated_at']; + protected array $ignore = ['id', 'campaign_id', 'slug', 'image', '_lft', '_rgt', 'quest_id', 'created_at', 'updated_at', 'location_id', 'instigator_id']; protected string $className = Quest::class; protected string $mappingName = 'quests'; @@ -25,6 +25,7 @@ public function second(): void // @phpstan-ignore-next-line $this->loadModel() ->foreign('locations', 'location_id') + ->foreign('entities', 'instigator_id') ->saveModel() ->elements() ->entitySecond() diff --git a/app/Services/Campaign/LeaveService.php b/app/Services/Campaign/LeaveService.php index 7760a67c72..d2e430bf37 100644 --- a/app/Services/Campaign/LeaveService.php +++ b/app/Services/Campaign/LeaveService.php @@ -5,6 +5,7 @@ use App\Facades\CampaignCache; use App\Facades\UserCache; use App\Jobs\Campaigns\NotifyAdmins; +use App\Models\CampaignRoleUser; use App\Models\CampaignUser; use App\Models\UserLog; use App\Traits\CampaignAware; @@ -29,6 +30,16 @@ public function leave(): void // Delete the member $member->delete(); + // Delete the member from all the roles in the campaign + $roles = CampaignRoleUser::select('campaign_role_users.*') + ->where('user_id', $this->user->id) + ->leftJoin('campaign_roles as cr', 'cr.id', '=', 'campaign_role_users.campaign_role_id') + ->where('cr.campaign_id', $this->campaign->id) + ->get(); + foreach ($roles as $role) { + $role->delete(); + } + // Notify admins NotifyAdmins::dispatch( $this->campaign, diff --git a/app/Services/Entity/PreviewService.php b/app/Services/Entity/PreviewService.php index af2e11e3b0..cfb5cc63de 100644 --- a/app/Services/Entity/PreviewService.php +++ b/app/Services/Entity/PreviewService.php @@ -110,6 +110,7 @@ protected function tags(): array 'name' => $tag->name, 'colour' => $tag->colour, 'link' => $tag->getLink(), + 'slug' => $tag->slug, ]; } diff --git a/app/Services/FilterService.php b/app/Services/FilterService.php index fbe41591a2..8965aa976c 100644 --- a/app/Services/FilterService.php +++ b/app/Services/FilterService.php @@ -106,9 +106,13 @@ protected function prepareFilters(array $availableFilters = []): self if (!empty($this->data) && in_array('tags', $availableFilters) && !isset($this->data['tags'])) { // Not calling from a page or order result, we can junk the filters if (empty($this->data['page']) && empty($this->data['order'])) { - $this->data['tags'] = null; + unset($this->data['tags']); } } + // Don't support the old tags, force using tags[] + if (isset($this->data['tags']) && !is_array($this->data['tags'])) { + unset($this->data['tags']); + } foreach ($this->data as $key => $value) { if (in_array($key, $availableFilters)) { @@ -280,8 +284,6 @@ public function activeFilters(): array return $filters; } - /** - */ public function activeFiltersCount(): int { return count($this->activeFilters()); @@ -329,7 +331,7 @@ public function pagination(): array } /** - * @return $this + * Flag the service to save the filters in session */ public function session(bool $session = true): self { @@ -355,8 +357,6 @@ protected function sessionLoad(string $key): array /** * Save the filter data to the session - * @param array $data - * @return $this */ protected function sessionSave(string $key, $data): self { @@ -369,6 +369,7 @@ protected function sessionSave(string $key, $data): self } /** + * Prepare filters to be copied to the clipboard */ public function clipboardFilters(): string { diff --git a/app/Services/LimitService.php b/app/Services/LimitService.php index c6229dbd33..6c8d60f9ac 100644 --- a/app/Services/LimitService.php +++ b/app/Services/LimitService.php @@ -32,7 +32,7 @@ public function upload(): int|string if (!$this->user->isSubscriber() && (!isset($this->campaign) || !$this->campaign->boosted())) { $min = config('limits.filesize.image'); if ($this->map) { - $min = 3072; + $min = 3; } $size = ($min * 1024); } elseif ($this->user->isElemental()) { diff --git a/app/Services/SubscriptionService.php b/app/Services/SubscriptionService.php index b7f88c6f18..d922d5ec61 100644 --- a/app/Services/SubscriptionService.php +++ b/app/Services/SubscriptionService.php @@ -225,7 +225,7 @@ public function finish($planID = null): self // If downgrading, send admins an email, and let stripe deal with the rest. A user update hook will be thrown // when the user really changes. Probably? - if ($this->downgrading()) { + if (!$this->webhook && $this->downgrading()) { SubscriptionDowngradedEmailJob::dispatch( $this->user, Arr::get($this->request, 'reason'), @@ -270,10 +270,13 @@ public function finish($planID = null): self } elseif ($plan == Pledge::OWLBEAR) { WelcomeSubscriptionEmailJob::dispatch($this->user, 'owlbear'); } + + // Save the new sub value + if (isset($this->tier)) { + $this->subscriptionValue = $period === 'yearly' ? $this->tier->yearly : $this->tier->monthly; + } } - // Save the new sub value - $this->subscriptionValue = $period === 'yearly' ? $this->tier->yearly : $this->tier->monthly; return $this; } @@ -600,51 +603,42 @@ public function elementalPlanID(): string */ public function owlbearPlans(): array { - return [ - config('subscription.owlbear.eur.monthly'), - config('subscription.owlbear.usd.monthly'), - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - ]; + return array_merge( + config('subscription.owlbear.monthly'), + config('subscription.owlbear.yearly'), + ); } /** */ public function wyvernPlans(): array { - return [ - config('subscription.wyvern.eur.monthly'), - config('subscription.wyvern.usd.monthly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - ]; + return array_merge( + config('subscription.wyvern.monthly'), + config('subscription.wyvern.yearly'), + ); } /** */ - public function yearlyPlans(string $tier = null): array + public function yearlyPlans(): array { - return [ - config('subscription.owlbear.eur.yearly'), - config('subscription.owlbear.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.yearly'), - ]; + return array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); } /** */ public function elementalPlans(): array { - return [ - config('subscription.elemental.eur.monthly'), - config('subscription.elemental.eur.yearly'), - config('subscription.elemental.usd.monthly'), - config('subscription.elemental.usd.yearly') - ]; + return array_merge( + config('subscription.elemental.monthly'), + config('subscription.elemental.yearly'), + ); } public function subscriptionValue(): int @@ -667,7 +661,7 @@ public function downgrading(): bool } // Cancelling - return $this->tier->name === Pledge::KOBOLD; + return isset($this->tier) && $this->tier->name === Pledge::KOBOLD; } /** diff --git a/app/Services/Users/CleanupService.php b/app/Services/Users/CleanupService.php index b47ad3bc35..95be75ce82 100644 --- a/app/Services/Users/CleanupService.php +++ b/app/Services/Users/CleanupService.php @@ -35,8 +35,9 @@ protected function removeCampaigns(): self { //Log::info('Services/Users/CleanupService', ['deleting', ['user' => $this->user->id]]); - // @phpstan-ignore-next-line - $members = CampaignUser::where('user_id', $this->user->id)->with(['campaign', 'campaign.members'])->get(); + $members = CampaignUser::where('user_id', $this->user->id) + ->with(['campaign', 'campaign.members']) + ->get(); foreach ($members as $member) { $member->delete(); diff --git a/app/Traits/TreeControllerTrait.php b/app/Traits/TreeControllerTrait.php index 804c141b69..a7708ba459 100644 --- a/app/Traits/TreeControllerTrait.php +++ b/app/Traits/TreeControllerTrait.php @@ -124,11 +124,10 @@ public function tree(Request $request, Campaign $campaign) $actions = $this->navActions; $campaign = $this->campaign; $this->getNavActions(); - $navActions = $this->navActions; $entityTypeId = $model->entityTypeId(); - if (!empty($this->titleKey)) { - $titleKey = $this->titleKey; + if (method_exists($this, 'titleKey')) { + $titleKey = $this->titleKey(); } else { $titleKey = Module::plural($entityTypeId, __('entities.' . $langKey)); } diff --git a/app/User.php b/app/User.php index d00f9df2ab..d473fcd47c 100644 --- a/app/User.php +++ b/app/User.php @@ -467,7 +467,6 @@ public function isFrauding(): bool public function onlyAdminCampaigns(): array { $campaigns = []; - // @phpstan-ignore-next-line $userCampaigns = $this->campaigns()->with(['roles', 'roles.users'])->get(); foreach ($userCampaigns as $campaign) { /** @var CampaignRole|null $adminRole */ @@ -506,14 +505,11 @@ public function hasPayPal(): bool public function isStripeYearly(): bool { - $prices = [ - config('subscription.owlbear.usd.yearly'), - config('subscription.owlbear.eur.yearly'), - config('subscription.wyvern.usd.yearly'), - config('subscription.wyvern.eur.yearly'), - config('subscription.elemental.usd.yearly'), - config('subscription.elemental.eur.yearly'), - ]; + $prices = array_merge( + config('subscription.owlbear.yearly'), + config('subscription.wyvern.yearly'), + config('subscription.elemental.yearly'), + ); return $this->subscribedToPrice($prices, 'kanka'); } } diff --git a/composer.lock b/composer.lock index 162e36ba64..f0c8ae350d 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.293.9", + "version": "3.298.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "1fa17dba47021586de511d10944637da8ea4cc43" + "reference": "7c7dd6f596e7f7ba22653a503ae76e8e11702028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1fa17dba47021586de511d10944637da8ea4cc43", - "reference": "1fa17dba47021586de511d10944637da8ea4cc43", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7c7dd6f596e7f7ba22653a503ae76e8e11702028", + "reference": "7c7dd6f596e7f7ba22653a503ae76e8e11702028", "shasum": "" }, "require": { @@ -151,9 +151,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.293.9" + "source": "https://github.com/aws/aws-sdk-php/tree/3.298.1" }, - "time": "2023-12-12T19:08:53+00:00" + "time": "2024-02-01T19:07:41+00:00" }, { "name": "bacon/bacon-qr-code", @@ -524,23 +524,23 @@ }, { "name": "clue/stream-filter", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/clue/stream-filter.git", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e" + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", "shasum": "" }, "require": { "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -562,7 +562,7 @@ } ], "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", + "homepage": "https://github.com/clue/stream-filter", "keywords": [ "bucket brigade", "callback", @@ -574,7 +574,7 @@ ], "support": { "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.6.0" + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" }, "funding": [ { @@ -586,7 +586,7 @@ "type": "github" } ], - "time": "2022-02-21T13:15:14+00:00" + "time": "2023-12-20T15:40:13+00:00" }, { "name": "cocur/slugify", @@ -949,16 +949,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { @@ -974,14 +974,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.15", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -1042,7 +1042,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.0" }, "funding": [ { @@ -1058,20 +1058,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -1103,9 +1103,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/event-manager", @@ -1200,16 +1200,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { @@ -1271,7 +1271,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -1287,7 +1287,7 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/lexer", @@ -2731,20 +2731,20 @@ }, { "name": "laravel/framework", - "version": "v10.37.1", + "version": "v10.43.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b41612c58e358655cda1239e18d8851ff8736e8f" + "reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b41612c58e358655cda1239e18d8851ff8736e8f", - "reference": "b41612c58e358655cda1239e18d8851ff8736e8f", + "url": "https://api.github.com/repos/laravel/framework/zipball/4f7802dfc9993cb57cf69615491ce1a7eb2e9529", + "reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", @@ -2786,6 +2786,8 @@ "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2841,7 +2843,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.15.1", + "orchestra/testbench-core": "^8.18", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", @@ -2897,6 +2899,7 @@ "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -2929,20 +2932,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-12-12T19:03:09+00:00" + "time": "2024-01-30T16:25:02+00:00" }, { "name": "laravel/passport", - "version": "v11.10.0", + "version": "v11.10.4", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b" + "reference": "8a75495f431e52df2ffa178851c402d7a5e8f037" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", + "url": "https://api.github.com/repos/laravel/passport/zipball/8a75495f431e52df2ffa178851c402d7a5e8f037", + "reference": "8a75495f431e52df2ffa178851c402d7a5e8f037", "shasum": "" }, "require": { @@ -3007,20 +3010,20 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2023-11-02T17:16:12+00:00" + "time": "2024-01-30T15:44:09+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.13", + "version": "v0.1.15", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a" + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/e1379d8ead15edd6cc4369c22274345982edc95a", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", "shasum": "" }, "require": { @@ -3036,7 +3039,7 @@ "require-dev": { "mockery/mockery": "^1.5", "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, "suggest": { @@ -3062,9 +3065,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.13" + "source": "https://github.com/laravel/prompts/tree/v0.1.15" }, - "time": "2023-10-27T13:53:59+00:00" + "time": "2023-12-29T22:37:42+00:00" }, { "name": "laravel/serializable-closure", @@ -3198,28 +3201,28 @@ }, { "name": "laravel/ui", - "version": "v4.2.3", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a" + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/eb532ea096ca1c0298c87c19233daf011fda743a", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a", + "url": "https://api.github.com/repos/laravel/ui/zipball/7335d7049b2cde345c029e9d2de839b80af62bc0", + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0", "shasum": "" }, "require": { - "illuminate/console": "^9.21|^10.0", - "illuminate/filesystem": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "illuminate/validation": "^9.21|^10.0", + "illuminate/console": "^9.21|^10.0|^11.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0", + "illuminate/support": "^9.21|^10.0|^11.0", + "illuminate/validation": "^9.21|^10.0|^11.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.3" + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.3|^10.4" }, "type": "library", "extra": { @@ -3254,9 +3257,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.2.3" + "source": "https://github.com/laravel/ui/tree/v4.4.0" }, - "time": "2023-11-23T14:44:22+00:00" + "time": "2024-01-12T15:56:45+00:00" }, { "name": "laravelcollective/html", @@ -3470,16 +3473,16 @@ }, { "name": "league/commonmark", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -3492,7 +3495,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -3502,10 +3505,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -3572,7 +3575,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T16:55:00+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -3712,16 +3715,16 @@ }, { "name": "league/flysystem", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", "shasum": "" }, "require": { @@ -3786,7 +3789,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.1" }, "funding": [ { @@ -3798,20 +3801,20 @@ "type": "github" } ], - "time": "2023-12-04T10:16:17+00:00" + "time": "2024-01-26T18:42:03+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.22.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8" + "reference": "97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/9808919ee5d819730d9582d4e1673e8d195c38d8", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240", + "reference": "97728e7a0d40ec9c6147eb0f4ee4cdc6ff0a8240", "shasum": "" }, "require": { @@ -3852,7 +3855,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.22.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.23.1" }, "funding": [ { @@ -3864,20 +3867,20 @@ "type": "github" } ], - "time": "2023-11-18T14:03:37+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/flysystem-local", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", "shasum": "" }, "require": { @@ -3912,7 +3915,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" }, "funding": [ { @@ -3924,20 +3927,20 @@ "type": "github" } ], - "time": "2023-12-04T10:14:46+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/mime-type-detection", - "version": "1.14.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { @@ -3968,7 +3971,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -3980,7 +3983,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:13:20+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "league/oauth1-client", @@ -4322,35 +4325,36 @@ }, { "name": "livewire/livewire", - "version": "v3.3.0", + "version": "v3.4.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9" + "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/7c1f609515e74ef1197c08e56a5606571b3ec1d9", - "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9", + "url": "https://api.github.com/repos/livewire/livewire/zipball/c0489d4a76382f6dcf6e2702112f86aa089d0c8d", + "reference": "c0489d4a76382f6dcf6e2702112f86aa089d0c8d", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", - "illuminate/validation": "^10.0", + "illuminate/database": "^10.0|^11.0", + "illuminate/routing": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", "league/mime-type-detection": "^1.9", "php": "^8.1", - "symfony/http-kernel": "^6.2" + "symfony/http-kernel": "^6.2|^7.0" }, "require-dev": { "calebporzio/sushi": "^2.1", - "laravel/framework": "^10.0", + "laravel/framework": "^10.0|^11.0", "laravel/prompts": "^0.1.6", "mockery/mockery": "^1.3.1", - "orchestra/testbench": "^8.0", - "orchestra/testbench-dusk": "^8.0", - "phpunit/phpunit": "^9.0", - "psy/psysh": "@stable" + "orchestra/testbench": "8.20.0|^9.0", + "orchestra/testbench-dusk": "8.20.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" }, "type": "library", "extra": { @@ -4384,7 +4388,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.3.0" + "source": "https://github.com/livewire/livewire/tree/v3.4.4" }, "funding": [ { @@ -4392,7 +4396,7 @@ "type": "github" } ], - "time": "2023-12-11T18:04:00+00:00" + "time": "2024-01-28T19:07:11+00:00" }, { "name": "maennchen/zipstream-php", @@ -4682,16 +4686,16 @@ }, { "name": "moneyphp/money", - "version": "v4.3.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/moneyphp/money.git", - "reference": "50ddfd15b2be01d4bed3bcb0c975a6af5f78a183" + "reference": "5e60aebf09f709dd4ea16bf85e66d65301c0d172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/50ddfd15b2be01d4bed3bcb0c975a6af5f78a183", - "reference": "50ddfd15b2be01d4bed3bcb0c975a6af5f78a183", + "url": "https://api.github.com/repos/moneyphp/money/zipball/5e60aebf09f709dd4ea16bf85e66d65301c0d172", + "reference": "5e60aebf09f709dd4ea16bf85e66d65301c0d172", "shasum": "" }, "require": { @@ -4715,7 +4719,7 @@ "phpbench/phpbench": "^1.2.5", "phpunit/phpunit": "^9.5.4", "psalm/plugin-phpunit": "^0.18.4", - "psr/cache": "^1.0.1", + "psr/cache": "^1.0.1 || ^2.0 || ^3.0", "vimeo/psalm": "~5.15.0" }, "suggest": { @@ -4764,9 +4768,9 @@ ], "support": { "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.3.0" + "source": "https://github.com/moneyphp/money/tree/v4.4.0" }, - "time": "2023-11-22T09:46:30+00:00" + "time": "2024-01-24T08:29:16+00:00" }, { "name": "monolog/monolog", @@ -5000,16 +5004,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.1", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { @@ -5103,35 +5107,35 @@ "type": "tidelift" } ], - "time": "2023-12-08T23:47:49+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.5", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -5163,22 +5167,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2023-10-05T20:37:59+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.3", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -5249,9 +5253,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nunomaduro/termwind", @@ -5658,23 +5662,23 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5.4", + "version": "0.5.5", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/671df0f3516252011aa94f9e8e3b3b66199339f8", + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8", "shasum": "" }, "require": { "ext-mbstring": "*" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { @@ -5684,7 +5688,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -5696,9 +5700,9 @@ "homepage": "https://github.com/PhenX/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.5" }, - "time": "2021-12-17T19:44:54+00:00" + "time": "2024-01-07T18:13:29+00:00" }, { "name": "phenx/php-svg-lib", @@ -6021,16 +6025,16 @@ }, { "name": "php-http/promise", - "version": "1.2.1", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", "shasum": "" }, "require": { @@ -6067,9 +6071,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" + "source": "https://github.com/php-http/promise/tree/1.3.0" }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2024-01-04T18:49:48+00:00" }, { "name": "phpoption/phpoption", @@ -6148,16 +6152,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.34", + "version": "3.0.35", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", "shasum": "" }, "require": { @@ -6238,7 +6242,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.34" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" }, "funding": [ { @@ -6254,7 +6258,7 @@ "type": "tidelift" } ], - "time": "2023-11-27T11:13:31+00:00" + "time": "2023-12-29T01:59:53+00:00" }, { "name": "pragmarx/google2fa", @@ -7276,16 +7280,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "8.5.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", "shasum": "" }, "require": { @@ -7293,13 +7297,18 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "codacy/coverage": "^1.4.3", + "phpunit/phpunit": "^5.7.27" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -7323,22 +7332,22 @@ ], "support": { "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.5.0" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2024-02-01T00:40:08+00:00" }, { "name": "sentry/sentry", - "version": "4.1.0", + "version": "4.5.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "89666f297891ff937fceb2f3d1fb967a6848cf37" + "reference": "a6e06f0b7a17e7f68e11297427da76bfe01a3ca3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/89666f297891ff937fceb2f3d1fb967a6848cf37", - "reference": "89666f297891ff937fceb2f3d1fb967a6848cf37", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/a6e06f0b7a17e7f68e11297427da76bfe01a3ca3", + "reference": "a6e06f0b7a17e7f68e11297427da76bfe01a3ca3", "shasum": "" }, "require": { @@ -7362,7 +7371,7 @@ "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^8.5.14|^9.4", - "symfony/phpunit-bridge": "^5.2|^6.0", + "symfony/phpunit-bridge": "^5.2|^6.0|^7.0", "vimeo/psalm": "^4.17" }, "suggest": { @@ -7402,7 +7411,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.1.0" + "source": "https://github.com/getsentry/sentry-php/tree/4.5.0" }, "funding": [ { @@ -7414,28 +7423,28 @@ "type": "custom" } ], - "time": "2023-12-04T12:41:21+00:00" + "time": "2024-01-29T16:16:10+00:00" }, { "name": "sentry/sentry-laravel", - "version": "4.1.1", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "792944c1d0b7342d1635ac6d72fbdc2f32486310" + "reference": "054638ac05d7668e8b2c636e66fed5b5b468f11f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/792944c1d0b7342d1635ac6d72fbdc2f32486310", - "reference": "792944c1d0b7342d1635ac6d72fbdc2f32486310", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/054638ac05d7668e8b2c636e66fed5b5b468f11f", + "reference": "054638ac05d7668e8b2c636e66fed5b5b468f11f", "shasum": "" }, "require": { "illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0", "nyholm/psr7": "^1.0", "php": "^7.2 | ^8.0", - "sentry/sentry": "^4.0", - "symfony/psr-http-message-bridge": "^1.0 | ^2.0" + "sentry/sentry": "^4.5", + "symfony/psr-http-message-bridge": "^1.0 | ^2.0 | ^6.0 | ^7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11", @@ -7491,7 +7500,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/4.1.1" + "source": "https://github.com/getsentry/sentry-laravel/tree/4.2.0" }, "funding": [ { @@ -7503,7 +7512,7 @@ "type": "custom" } ], - "time": "2023-12-12T22:17:13+00:00" + "time": "2024-01-29T17:08:18+00:00" }, { "name": "sergej-kurakin/diceroller", @@ -7563,21 +7572,21 @@ }, { "name": "spatie/db-dumper", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a" + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/bbd5ae0f331d47e6534eb307e256c11a65c8e24a", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/59beef7ad612ca7463dfddb64de6e038eb59e0d7", + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7", "shasum": "" }, "require": { "php": "^8.0", - "symfony/process": "^5.0|^6.0" + "symfony/process": "^5.0|^6.0|^7.0" }, "require-dev": { "pestphp/pest": "^1.22" @@ -7610,7 +7619,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.4.0" + "source": "https://github.com/spatie/db-dumper/tree/3.4.2" }, "funding": [ { @@ -7622,20 +7631,20 @@ "type": "github" } ], - "time": "2023-06-27T08:34:52+00:00" + "time": "2023-12-25T11:42:15+00:00" }, { "name": "spatie/laravel-backup", - "version": "8.4.1", + "version": "8.5.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1" + "reference": "4e97ff2c8b65835037e746755941bf05430e191d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/b79f790cc856e67cce012abf34bf1c9035085dc1", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/4e97ff2c8b65835037e746755941bf05430e191d", + "reference": "4e97ff2c8b65835037e746755941bf05430e191d", "shasum": "" }, "require": { @@ -7658,10 +7667,10 @@ "require-dev": { "composer-runtime-api": "^2.0", "ext-pcntl": "*", + "larastan/larastan": "^2.7.0", "laravel/slack-notification-channel": "^2.5", "league/flysystem-aws-s3-v3": "^2.0|^3.0", "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^2.1", "orchestra/testbench": "^8.0", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", @@ -7709,7 +7718,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/8.4.1" + "source": "https://github.com/spatie/laravel-backup/tree/8.5.1" }, "funding": [ { @@ -7721,24 +7730,24 @@ "type": "other" } ], - "time": "2023-11-20T08:21:45+00:00" + "time": "2024-01-23T08:57:08+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.16.1", + "version": "1.16.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0", + "illuminate/contracts": "^9.28|^10.0|^11.0", "php": "^8.0" }, "require-dev": { @@ -7773,7 +7782,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" }, "funding": [ { @@ -7781,7 +7790,7 @@ "type": "github" } ], - "time": "2023-08-23T09:04:39+00:00" + "time": "2024-01-11T08:43:00+00:00" }, { "name": "spatie/laravel-signal-aware-command", @@ -7859,16 +7868,16 @@ }, { "name": "spatie/temporary-directory", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", "shasum": "" }, "require": { @@ -7904,7 +7913,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" }, "funding": [ { @@ -7916,20 +7925,20 @@ "type": "github" } ], - "time": "2023-09-25T07:13:36+00:00" + "time": "2023-12-25T11:46:58+00:00" }, { "name": "srmklive/paypal", - "version": "3.0.27", + "version": "3.0.28", "source": { "type": "git", "url": "https://github.com/srmklive/laravel-paypal.git", - "reference": "79560c59d8efd3bfab4dcdc141f7f1477c2f95eb" + "reference": "6bde2b232a38c413f730115743cc9dcc29d4228e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/79560c59d8efd3bfab4dcdc141f7f1477c2f95eb", - "reference": "79560c59d8efd3bfab4dcdc141f7f1477c2f95eb", + "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/6bde2b232a38c413f730115743cc9dcc29d4228e", + "reference": "6bde2b232a38c413f730115743cc9dcc29d4228e", "shasum": "" }, "require": { @@ -7980,9 +7989,9 @@ ], "support": { "issues": "https://github.com/srmklive/laravel-paypal/issues", - "source": "https://github.com/srmklive/laravel-paypal/tree/3.0.27" + "source": "https://github.com/srmklive/laravel-paypal/tree/3.0.28" }, - "time": "2023-11-09T22:02:55+00:00" + "time": "2023-12-20T18:57:16+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep-contracts", @@ -8027,16 +8036,16 @@ }, { "name": "staudenmeir/laravel-adjacency-list", - "version": "v1.16", + "version": "v1.18", "source": { "type": "git", "url": "https://github.com/staudenmeir/laravel-adjacency-list.git", - "reference": "c8f69f672b167c24e275339dcbbecda9fd78f6f9" + "reference": "f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/laravel-adjacency-list/zipball/c8f69f672b167c24e275339dcbbecda9fd78f6f9", - "reference": "c8f69f672b167c24e275339dcbbecda9fd78f6f9", + "url": "https://api.github.com/repos/staudenmeir/laravel-adjacency-list/zipball/f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c", + "reference": "f8a6778fb276e0d8eaa848d14cfe6823c15a7f5c", "shasum": "" }, "require": { @@ -8048,8 +8057,8 @@ "require-dev": { "barryvdh/laravel-ide-helper": "^2.13", "doctrine/dbal": "^3.5.2", + "larastan/larastan": "^2.0", "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.0", "orchestra/testbench": "^8.15", "phpunit/phpunit": "^10.1", "singlestoredb/singlestoredb-laravel": "^1.5.1", @@ -8084,7 +8093,7 @@ "description": "Recursive Laravel Eloquent relationships with CTEs", "support": { "issues": "https://github.com/staudenmeir/laravel-adjacency-list/issues", - "source": "https://github.com/staudenmeir/laravel-adjacency-list/tree/v1.16" + "source": "https://github.com/staudenmeir/laravel-adjacency-list/tree/v1.18" }, "funding": [ { @@ -8092,7 +8101,7 @@ "type": "custom" } ], - "time": "2023-12-30T15:58:29+00:00" + "time": "2024-01-30T15:50:51+00:00" }, { "name": "staudenmeir/laravel-cte", @@ -8345,16 +8354,16 @@ }, { "name": "symfony/console", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", "shasum": "" }, "require": { @@ -8419,7 +8428,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.1" + "source": "https://github.com/symfony/console/tree/v6.4.3" }, "funding": [ { @@ -8435,20 +8444,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:54:28+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { @@ -8484,7 +8493,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.0" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -8500,7 +8509,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -8571,16 +8580,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" + "reference": "6db31849011fefe091e94d0bb10cba26f7919894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6db31849011fefe091e94d0bb10cba26f7919894", + "reference": "6db31849011fefe091e94d0bb10cba26f7919894", "shasum": "" }, "require": { @@ -8618,7 +8627,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.3" }, "funding": [ { @@ -8634,20 +8643,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", "shasum": "" }, "require": { @@ -8693,7 +8702,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.3" }, "funding": [ { @@ -8709,20 +8718,20 @@ "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2024-01-29T15:40:36+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e", - "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { @@ -8773,7 +8782,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -8789,7 +8798,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T16:29:09+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -8933,16 +8942,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29" + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5c584530b77aa10ae216989ffc48b4bedc9c0b29", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86", + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86", "shasum": "" }, "require": { @@ -9006,7 +9015,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.0" + "source": "https://github.com/symfony/http-client/tree/v6.4.3" }, "funding": [ { @@ -9022,7 +9031,7 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:55:58+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/http-client-contracts", @@ -9104,16 +9113,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", "shasum": "" }, "require": { @@ -9161,7 +9170,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" }, "funding": [ { @@ -9177,20 +9186,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", "shasum": "" }, "require": { @@ -9274,7 +9283,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" }, "funding": [ { @@ -9290,20 +9299,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2024-01-31T07:21:29+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", "shasum": "" }, "require": { @@ -9354,7 +9363,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.3" }, "funding": [ { @@ -9370,20 +9379,20 @@ "type": "tidelift" } ], - "time": "2023-11-12T18:02:22+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7" + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", "shasum": "" }, "require": { @@ -9423,7 +9432,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.3" }, "funding": [ { @@ -9439,20 +9448,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T17:20:05+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mime", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { @@ -9507,7 +9516,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.0" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -9523,7 +9532,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:49:05+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/options-resolver", @@ -10419,16 +10428,16 @@ }, { "name": "symfony/process", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", "shasum": "" }, "require": { @@ -10460,7 +10469,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.0" + "source": "https://github.com/symfony/process/tree/v6.4.3" }, "funding": [ { @@ -10476,7 +10485,7 @@ "type": "tidelift" } ], - "time": "2023-11-17T21:06:49+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -10569,16 +10578,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", "shasum": "" }, "require": { @@ -10632,7 +10641,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.1" + "source": "https://github.com/symfony/routing/tree/v6.4.3" }, "funding": [ { @@ -10648,25 +10657,25 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2024-01-30T13:55:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -10714,7 +10723,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -10730,20 +10739,20 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620" + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620", - "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620", + "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", + "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", "shasum": "" }, "require": { @@ -10800,7 +10809,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.0" + "source": "https://github.com/symfony/string/tree/v7.0.3" }, "funding": [ { @@ -10816,20 +10825,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:40:23+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/translation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" + "reference": "637c51191b6b184184bbf98937702bcf554f7d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04", "shasum": "" }, "require": { @@ -10852,7 +10861,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0|^7.0", @@ -10895,7 +10904,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.0" + "source": "https://github.com/symfony/translation/tree/v6.4.3" }, "funding": [ { @@ -10911,20 +10920,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:14:36+00:00" + "time": "2024-01-29T13:11:52+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -10973,7 +10982,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -10989,20 +10998,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -11047,7 +11056,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -11063,20 +11072,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "0435a08f69125535336177c29d56af3abc1f69da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", + "reference": "0435a08f69125535336177c29d56af3abc1f69da", "shasum": "" }, "require": { @@ -11132,7 +11141,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" }, "funding": [ { @@ -11148,7 +11157,7 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2024-01-23T14:53:30+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -11653,16 +11662,16 @@ }, { "name": "brianium/paratest", - "version": "v7.3.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" + "reference": "4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703", + "reference": "4ffc52ebbce2f259d6a15c1ddaf4ad837eef6703", "shasum": "" }, "require": { @@ -11670,28 +11679,27 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "fidry/cpu-core-counter": "^1.0.0", "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.7", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-timer": "^6.0", - "phpunit/phpunit": "^10.4.2", - "sebastian/environment": "^6.0.1", - "symfony/console": "^6.3.4 || ^7.0.0", - "symfony/process": "^6.3.4 || ^7.0.0" + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.9 || ^11.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0", + "symfony/console": "^6.4.3 || ^7.0.3", + "symfony/process": "^6.4.3 || ^7.0.3" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.27.6", - "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan": "^1.10.57", "phpstan/phpstan-deprecation-rules": "^1.1.4", "phpstan/phpstan-phpunit": "^1.3.15", "phpstan/phpstan-strict-rules": "^1.5.2", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^6.3.1 || ^7.0.0" + "squizlabs/php_codesniffer": "^3.8.1", + "symfony/filesystem": "^6.4.3 || ^7.0.3" }, "bin": [ "bin/paratest", @@ -11732,7 +11740,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.4.0" }, "funding": [ { @@ -11744,7 +11752,7 @@ "type": "paypal" } ], - "time": "2023-10-31T09:24:17+00:00" + "time": "2024-02-02T09:37:18+00:00" }, { "name": "composer/class-map-generator", @@ -11958,16 +11966,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -11993,11 +12001,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -12020,9 +12023,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "fidry/cpu-core-counter", @@ -12209,16 +12212,16 @@ }, { "name": "laravel/pint", - "version": "v1.13.7", + "version": "v1.13.10", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece" + "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/4157768980dbd977f1c4b4cc94997416d8b30ece", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece", + "url": "https://api.github.com/repos/laravel/pint/zipball/e2b5060885694ca30ac008c05dc9d47f10ed1abf", + "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf", "shasum": "" }, "require": { @@ -12229,13 +12232,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.38.0", - "illuminate/view": "^10.30.1", + "friendsofphp/php-cs-fixer": "^3.47.1", + "illuminate/view": "^10.41.0", + "larastan/larastan": "^2.8.1", "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.6", - "nunomaduro/larastan": "^2.6.4", + "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.24.2" + "pestphp/pest": "^2.31.0" }, "bin": [ "builds/pint" @@ -12271,26 +12274,26 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-12-05T19:43:12+00:00" + "time": "2024-01-22T09:04:15+00:00" }, { "name": "laravel/sail", - "version": "v1.26.3", + "version": "v1.27.3", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" + "reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "url": "https://api.github.com/repos/laravel/sail/zipball/7e01b345072c9604ead9d7aed175bf7ac1d80289", + "reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289", "shasum": "" }, "require": { - "illuminate/console": "^9.0|^10.0|^11.0", - "illuminate/contracts": "^9.0|^10.0|^11.0", - "illuminate/support": "^9.0|^10.0|^11.0", + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", "symfony/yaml": "^6.0|^7.0" }, @@ -12336,20 +12339,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-12-02T18:26:39+00:00" + "time": "2024-01-30T03:03:59+00:00" }, { "name": "laravel/telescope", - "version": "v4.17.3", + "version": "v4.17.5", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261" + "reference": "2c5295261d1459e4f9b157c407a663a6685f3ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/17a420d0121b03ea90648dd4484b62abe6d3e261", - "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261", + "url": "https://api.github.com/repos/laravel/telescope/zipball/2c5295261d1459e4f9b157c407a663a6685f3ddf", + "reference": "2c5295261d1459e4f9b157c407a663a6685f3ddf", "shasum": "" }, "require": { @@ -12405,9 +12408,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.17.3" + "source": "https://github.com/laravel/telescope/tree/v4.17.5" }, - "time": "2023-12-11T22:00:12+00:00" + "time": "2024-01-30T15:41:45+00:00" }, { "name": "maximebf/debugbar", @@ -12771,36 +12774,36 @@ }, { "name": "nunomaduro/larastan", - "version": "v2.7.0", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "a2610d46b9999cf558d9900ccb641962d1442f55" + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/a2610d46b9999cf558d9900ccb641962d1442f55", - "reference": "a2610d46b9999cf558d9900ccb641962d1442f55", + "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0", - "illuminate/container": "^9.52.16 || ^10.28.0", - "illuminate/contracts": "^9.52.16 || ^10.28.0", - "illuminate/database": "^9.52.16 || ^10.28.0", - "illuminate/http": "^9.52.16 || ^10.28.0", - "illuminate/pipeline": "^9.52.16 || ^10.28.0", - "illuminate/support": "^9.52.16 || ^10.28.0", + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", "php": "^8.0.2", "phpmyadmin/sql-parser": "^5.8.2", - "phpstan/phpstan": "^1.10.41" + "phpstan/phpstan": "^1.10.50" }, "require-dev": { "nikic/php-parser": "^4.17.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0", - "orchestra/testbench": "^7.33.0 || ^8.13.0", - "phpunit/phpunit": "^9.6.13" + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", + "phpunit/phpunit": "^9.6.13 || ^10.5" }, "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" @@ -12848,7 +12851,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.7.0" + "source": "https://github.com/larastan/larastan/tree/v2.8.1" }, "funding": [ { @@ -12869,20 +12872,20 @@ } ], "abandoned": "larastan/larastan", - "time": "2023-12-04T19:21:38+00:00" + "time": "2024-01-08T09:11:17+00:00" }, { "name": "pdepend/pdepend", - "version": "2.16.1", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "66ceb05eaa8bf358574143c974b04463911bc700" + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/66ceb05eaa8bf358574143c974b04463911bc700", - "reference": "66ceb05eaa8bf358574143c974b04463911bc700", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58", + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58", "shasum": "" }, "require": { @@ -12924,7 +12927,7 @@ ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.16.1" + "source": "https://github.com/pdepend/pdepend/tree/2.16.2" }, "funding": [ { @@ -12932,40 +12935,40 @@ "type": "tidelift" } ], - "time": "2023-12-10T18:38:19+00:00" + "time": "2023-12-17T18:09:59+00:00" }, { "name": "pestphp/pest", - "version": "v2.28.0", + "version": "v2.33.2", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe" + "reference": "eeade88ad236f881f044430e0e9fefaad255718f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/9a8f6e64149592b2555a2519237abb39e9e4f1fe", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe", + "url": "https://api.github.com/repos/pestphp/pest/zipball/eeade88ad236f881f044430e0e9fefaad255718f", + "reference": "eeade88ad236f881f044430e0e9fefaad255718f", "shasum": "" }, "require": { "brianium/paratest": "^7.3.1", - "nunomaduro/collision": "^7.10.0|^8.0.0", + "nunomaduro/collision": "^7.10.0|^8.1.0", "nunomaduro/termwind": "^1.15.1|^2.0.0", "pestphp/pest-plugin": "^2.1.1", - "pestphp/pest-plugin-arch": "^2.5.0", + "pestphp/pest-plugin-arch": "^2.7.0", "php": "^8.1.0", - "phpunit/phpunit": "^10.5.2" + "phpunit/phpunit": "^10.5.9" }, "conflict": { - "phpunit/phpunit": ">10.5.2", + "phpunit/phpunit": ">10.5.9", "sebastian/exporter": "<5.1.0", "webmozart/assert": "<1.11.0" }, "require-dev": { "pestphp/pest-dev-tools": "^2.16.0", - "pestphp/pest-plugin-type-coverage": "^2.5.0", - "symfony/process": "^6.4.0|^7.0.1" + "pestphp/pest-plugin-type-coverage": "^2.8.0", + "symfony/process": "^6.4.0|^7.0.2" }, "bin": [ "bin/pest" @@ -13028,7 +13031,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.28.0" + "source": "https://github.com/pestphp/pest/tree/v2.33.2" }, "funding": [ { @@ -13040,7 +13043,7 @@ "type": "github" } ], - "time": "2023-12-05T19:06:22+00:00" + "time": "2024-01-29T12:50:00+00:00" }, { "name": "pestphp/pest-plugin", @@ -13114,26 +13117,26 @@ }, { "name": "pestphp/pest-plugin-arch", - "version": "v2.5.0", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db" + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/8d850753f0192c3fa1ed6c6cac6f76b718d131db", - "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", "shasum": "" }, "require": { - "nunomaduro/collision": "^7.10.0|^8.0.0", + "nunomaduro/collision": "^7.10.0|^8.1.0", "pestphp/pest-plugin": "^2.1.1", "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.7.5" + "ta-tikoma/phpunit-architecture-test": "^0.8.4" }, "require-dev": { - "pestphp/pest": "^2.27.0", + "pestphp/pest": "^2.33.0", "pestphp/pest-dev-tools": "^2.16.0" }, "type": "library", @@ -13169,7 +13172,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.5.0" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" }, "funding": [ { @@ -13181,7 +13184,7 @@ "type": "github" } ], - "time": "2023-12-05T19:01:10+00:00" + "time": "2024-01-26T09:46:42+00:00" }, { "name": "pestphp/pest-plugin-laravel", @@ -13475,16 +13478,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -13527,9 +13530,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpmd/phpmd", @@ -13616,16 +13619,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.2", + "version": "5.9.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287" + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/f1720ae19abe6294cb5599594a8a57bc3c8cc287", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/011fa18a4e55591fac6545a821921dd1d61c6984", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984", "shasum": "" }, "require": { @@ -13656,6 +13659,7 @@ "bin": [ "bin/highlight-query", "bin/lint-query", + "bin/sql-parser", "bin/tokenize-query" ], "type": "library", @@ -13699,20 +13703,20 @@ "type": "other" } ], - "time": "2023-09-19T12:34:29+00:00" + "time": "2024-01-20T20:34:02+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -13744,22 +13748,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.55", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -13808,27 +13812,27 @@ "type": "tidelift" } ], - "time": "2024-01-08T12:32:40+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.10", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -13878,7 +13882,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.10" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -13886,7 +13890,7 @@ "type": "github" } ], - "time": "2023-12-11T06:28:43+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -14133,16 +14137,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.2", + "version": "10.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe" + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5aedff46afba98dddecaa12349ec044d9103d4fe", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", "shasum": "" }, "require": { @@ -14214,7 +14218,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" }, "funding": [ { @@ -14230,7 +14234,7 @@ "type": "tidelift" } ], - "time": "2023-12-05T14:54:33+00:00" + "time": "2024-01-22T14:35:40+00:00" }, { "name": "sebastian/cli-parser", @@ -14478,20 +14482,20 @@ }, { "name": "sebastian/complexity", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -14500,7 +14504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -14524,7 +14528,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -14532,20 +14536,20 @@ "type": "github" } ], - "time": "2023-09-28T11:50:59+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -14558,7 +14562,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -14591,7 +14595,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -14599,7 +14603,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", @@ -14807,20 +14811,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -14853,7 +14857,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -14861,7 +14865,7 @@ "type": "github" } ], - "time": "2023-08-31T09:25:50+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -15211,21 +15215,20 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.3", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", "shasum": "" }, "require": { "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.62.1", "php": "^8.0", "spatie/backtrace": "^1.5.2", "symfony/http-foundation": "^5.2|^6.0|^7.0", @@ -15269,7 +15272,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { @@ -15277,20 +15280,20 @@ "type": "github" } ], - "time": "2023-10-17T15:54:07+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { "name": "spatie/ignition", - "version": "1.11.3", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044" + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", - "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", "shasum": "" }, "require": { @@ -15360,39 +15363,39 @@ "type": "github" } ], - "time": "2023-10-18T14:09:40+00:00" + "time": "2024-01-03T15:49:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.3.1", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^10.0", + "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", "spatie/ignition": "^1.9", - "symfony/console": "^6.2.3", - "symfony/var-dumper": "^6.2.3" + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "livewire/livewire": "^2.11", + "livewire/livewire": "^2.11|^3.3.5", "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.3.4", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^1.22.3", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", "phpstan/extension-installer": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.1.1", "phpstan/phpstan-phpunit": "^1.3.3", @@ -15452,20 +15455,20 @@ "type": "github" } ], - "time": "2023-10-09T12:55:26+00:00" + "time": "2024-01-12T13:14:58+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -15475,11 +15478,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -15532,20 +15535,20 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "symfony/config", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a" + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8789646600f4e7e451dde9e1dc81cfa429f3857a", - "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a", + "url": "https://api.github.com/repos/symfony/config/zipball/86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", + "reference": "86a5027869ca3d6bdecae6d5d6c2f77c8f2c1d16", "shasum": "" }, "require": { @@ -15591,7 +15594,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.0" + "source": "https://github.com/symfony/config/tree/v7.0.3" }, "funding": [ { @@ -15607,20 +15610,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:30:23+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f6667642954bce638733f254c39e5b5700b47ba4" + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6667642954bce638733f254c39e5b5700b47ba4", - "reference": "f6667642954bce638733f254c39e5b5700b47ba4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e915c6684b8e3ae90a4441f6823ebbb40edf0b92", + "reference": "e915c6684b8e3ae90a4441f6823ebbb40edf0b92", "shasum": "" }, "require": { @@ -15671,7 +15674,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.0.1" + "source": "https://github.com/symfony/dependency-injection/tree/v7.0.3" }, "funding": [ { @@ -15687,20 +15690,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T15:10:06+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", + "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", "shasum": "" }, "require": { @@ -15734,7 +15737,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.0" + "source": "https://github.com/symfony/filesystem/tree/v7.0.3" }, "funding": [ { @@ -15750,20 +15753,20 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:33:22+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.1", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3" + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", - "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", + "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", "shasum": "" }, "require": { @@ -15808,7 +15811,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.1" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.3" }, "funding": [ { @@ -15824,20 +15827,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:38:21+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { @@ -15879,7 +15882,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.0" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -15895,32 +15898,32 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.7.5", + "version": "0.8.4", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "9eb08437e8f0c0c75cc947a373cf49672c335827" + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/9eb08437e8f0c0c75cc947a373cf49672c335827", - "reference": "9eb08437e8f0c0c75cc947a373cf49672c335827", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", "shasum": "" }, "require": { - "nikic/php-parser": "^4.15.4", + "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.1.1", - "symfony/finder": "^6.2.7 || ^7.0.0" + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" }, "require-dev": { - "laravel/pint": "^1.9.0", - "phpstan/phpstan": "^1.10.13" + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" }, "type": "library", "autoload": { @@ -15952,9 +15955,9 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.5" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" }, - "time": "2023-10-12T15:31:50+00:00" + "time": "2024-01-05T14:10:56+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/discord.php b/config/discord.php index 569a99d9b6..f749c7f431 100644 --- a/config/discord.php +++ b/config/discord.php @@ -16,6 +16,11 @@ 'bot_secret' => getenv('DISCORD_BOT_SECRET'), 'bot_token' => getenv('DISCORD_BOT_TOKEN'), + 'webhooks' => [ + 'features' => env('DISCORD_WEBHOOK_FEATURES', null), + ], + 'color' => env('DISCORD_COLOR', '7506394'), + 'roles' => [ 'owlbear' => 435813101506527233, 'wyvern' => 805183678153621514, diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 0000000000..1418060c2c --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,159 @@ + 'App\\Livewire', + + /* + |--------------------------------------------------------------------------- + | View Path + |--------------------------------------------------------------------------- + | + | This value is used to specify where Livewire component Blade templates are + | stored when running file creation commands like `artisan make:livewire`. + | It is also used if you choose to omit a component's render() method. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |--------------------------------------------------------------------------- + | Layout + |--------------------------------------------------------------------------- + | The view that will be used as the layout when rendering a single component + | as an entire page via `Route::get('/post/create', CreatePost::class);`. + | In this case, the view returned by CreatePost will render into $slot. + | + */ + + 'layout' => 'components.layouts.app', + + /* + |--------------------------------------------------------------------------- + | Lazy Loading Placeholder + |--------------------------------------------------------------------------- + | Livewire allows you to lazy load components that would otherwise slow down + | the initial page load. Every component can have a custom placeholder or + | you can define the default placeholder view for all components below. + | + */ + + 'lazy_placeholder' => null, + + /* + |--------------------------------------------------------------------------- + | Temporary File Uploads + |--------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is stored permanently. All file uploads are directed to + | a global endpoint for temporary storage. You may configure this below: + | + */ + + 'temporary_file_upload' => [ + 'disk' => env('LIVEWIRE_TEMP_DISK', 's3'), // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + ], + + /* + |--------------------------------------------------------------------------- + | Render On Redirect + |--------------------------------------------------------------------------- + | + | This value determines if Livewire will run a component's `render()` method + | after a redirect has been triggered using something like `redirect(...)` + | Setting this to true will render the view once more before redirecting + | + */ + + 'render_on_redirect' => false, + + /* + |--------------------------------------------------------------------------- + | Eloquent Model Binding + |--------------------------------------------------------------------------- + | + | Previous versions of Livewire supported binding directly to eloquent model + | properties using wire:model by default. However, this behavior has been + | deemed too "magical" and has therefore been put under a feature flag. + | + */ + + 'legacy_model_binding' => false, + + /* + |--------------------------------------------------------------------------- + | Auto-inject Frontend Assets + |--------------------------------------------------------------------------- + | + | By default, Livewire automatically injects its JavaScript and CSS into the + | and of pages containing Livewire components. By disabling + | this behavior, you need to use @livewireStyles and @livewireScripts. + | + */ + + 'inject_assets' => true, + + /* + |--------------------------------------------------------------------------- + | Navigate (SPA mode) + |--------------------------------------------------------------------------- + | + | By adding `wire:navigate` to links in your Livewire application, Livewire + | will prevent the default link handling and instead request those pages + | via AJAX, creating an SPA-like effect. Configure this behavior here. + | + */ + + 'navigate' => [ + 'show_progress_bar' => true, + 'progress_bar_color' => '#2299dd', + ], + + /* + |--------------------------------------------------------------------------- + | HTML Morph Markers + |--------------------------------------------------------------------------- + | + | Livewire intelligently "morphs" existing HTML into the newly rendered HTML + | after each update. To make this process more reliable, Livewire injects + | "markers" into the rendered Blade surrounding @if, @class & @foreach. + | + */ + + 'inject_morph_markers' => true, + + /* + |--------------------------------------------------------------------------- + | Pagination Theme + |--------------------------------------------------------------------------- + | + | When enabling Livewire's pagination feature by using the `WithPagination` + | trait, Livewire will use Tailwind templates to render pagination views + | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" + | + */ + + 'pagination_theme' => 'tailwind', +]; diff --git a/config/subscription.php b/config/subscription.php index 4b26f3ef68..ca50b780a4 100644 --- a/config/subscription.php +++ b/config/subscription.php @@ -9,15 +9,19 @@ ], 'usd' => [ 'monthly' => env('STRIPE_OWLBEAR_USD'), - 'yearly' => env('STRIPE_OWLBEAR_USD_YEARLY') + 'yearly' => env('STRIPE_OWLBEAR_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_OWLBEAR_EUR'), + env('STRIPE_OWLBEAR_EUR_OLD'), env('STRIPE_OWLBEAR_USD'), + env('STRIPE_OWLBEAR_USD_OLD'), ], 'yearly' => [ env('STRIPE_OWLBEAR_EUR_YEARLY'), + env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), env('STRIPE_OWLBEAR_USD_YEARLY'), + env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), ], ], 'wyvern' => [ @@ -27,15 +31,19 @@ ], 'usd' => [ 'monthly' => env('STRIPE_WYVERN_USD'), - 'yearly' => env('STRIPE_WYVERN_USD_YEARLY') + 'yearly' => env('STRIPE_WYVERN_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_WYVERN_EUR'), + env('STRIPE_WYVERN_EUR_OLD'), env('STRIPE_WYVERN_USD'), + env('STRIPE_WYVERN_USD_OLD'), ], 'yearly' => [ env('STRIPE_WYVERN_EUR_YEARLY'), + env('STRIPE_WYVERN_EUR_YEARLY_OLD'), env('STRIPE_WYVERN_USD_YEARLY'), + env('STRIPE_WYVERN_USD_YEARLY_OLD'), ], ], 'elemental' => [ @@ -45,15 +53,47 @@ ], 'usd' => [ 'monthly' => env('STRIPE_ELEMENTAL_USD'), - 'yearly' => env('STRIPE_ELEMENTAL_USD_YEARLY') + 'yearly' => env('STRIPE_ELEMENTAL_USD_YEARLY'), ], 'monthly' => [ env('STRIPE_ELEMENTAL_EUR'), + env('STRIPE_ELEMENTAL_EUR_OLD'), env('STRIPE_ELEMENTAL_USD'), + env('STRIPE_ELEMENTAL_USD_OLD'), ], 'yearly' => [ env('STRIPE_ELEMENTAL_EUR_YEARLY'), + env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), env('STRIPE_ELEMENTAL_USD_YEARLY'), + env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), ], ], + 'old' => [ + 'all' => [ + env('STRIPE_OWLBEAR_EUR_OLD'), + env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), + env('STRIPE_OWLBEAR_USD_OLD'), + env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), + env('STRIPE_WYVERN_EUR_OLD'), + env('STRIPE_WYVERN_EUR_YEARLY_OLD'), + env('STRIPE_WYVERN_USD_OLD'), + env('STRIPE_WYVERN_USD_YEARLY_OLD'), + env('STRIPE_ELEMENTAL_EUR_OLD'), + env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), + env('STRIPE_ELEMENTAL_USD_OLD'), + env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), + ], + 'oe' => env('STRIPE_OWLBEAR_EUR_OLD'), + 'oey' => env('STRIPE_OWLBEAR_EUR_YEARLY_OLD'), + 'ou' => env('STRIPE_OWLBEAR_USD_OLD'), + 'ouy' => env('STRIPE_OWLBEAR_USD_YEARLY_OLD'), + 'we' => env('STRIPE_WYVERN_EUR_OLD'), + 'wey' => env('STRIPE_WYVERN_EUR_YEARLY_OLD'), + 'wu' => env('STRIPE_WYVERN_USD_OLD'), + 'wuy' => env('STRIPE_WYVERN_USD_YEARLY_OLD'), + 'ee' => env('STRIPE_ELEMENTAL_EUR_OLD'), + 'eey' => env('STRIPE_ELEMENTAL_EUR_YEARLY_OLD'), + 'eu' => env('STRIPE_ELEMENTAL_USD_OLD'), + 'euy' => env('STRIPE_ELEMENTAL_USD_YEARLY_OLD'), + ], ]; diff --git a/database/migrations/2024_01_11_150113_update_attributes.php b/database/migrations/2024_01_11_150113_update_attributes.php index 5629c407d1..b9333f86ec 100644 --- a/database/migrations/2024_01_11_150113_update_attributes.php +++ b/database/migrations/2024_01_11_150113_update_attributes.php @@ -15,7 +15,7 @@ public function up(): void //$table->tinyInteger('is_hidden')->default(0)->change(); }); - Illuminate\Support\Facades\DB::statement('ALTER TABLE `attributes` MODIFY `is_hidden` tinyint(1) DEFAULT 0 NOT NULL;'); + Illuminate\Support\Facades\DB::raw('ALTER TABLE `attributes` MODIFY `is_hidden` tinyint(1) DEFAULT 0 NOT NULL;'); } /** diff --git a/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php b/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php new file mode 100644 index 0000000000..c7f13a98a9 --- /dev/null +++ b/database/migrations/2024_01_25_192113_update_creatures_add_is_extinct.php @@ -0,0 +1,29 @@ +boolean('is_extinct')->default(0); + $table->index('is_extinct'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('creatures', function (Blueprint $table) { + $table->dropIndex(['is_extinct']); + $table->dropColumn('is_extinct'); + }); + } +}; diff --git a/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php b/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php new file mode 100644 index 0000000000..f9ce8a8198 --- /dev/null +++ b/database/migrations/2024_01_26_194006_update_campaigns_add_is_discreet.php @@ -0,0 +1,29 @@ +boolean('is_discreet')->default(0); + $table->index('is_discreet'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('campaigns', function (Blueprint $table) { + $table->dropIndex(['is_discreet']); + $table->dropColumn('is_discreet'); + }); + } +}; diff --git a/database/migrations/2024_02_06_162941_create_feature_files.php b/database/migrations/2024_02_06_162941_create_feature_files.php new file mode 100644 index 0000000000..cd85be9d5d --- /dev/null +++ b/database/migrations/2024_02_06_162941_create_feature_files.php @@ -0,0 +1,30 @@ +id(); + $table->unsignedBigInteger('feature_id'); + $table->string('path')->nullable(); + $table->timestamps(); + + $table->foreign('feature_id')->references('id')->on('features')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('feature_files'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 5b62c76603..8c1253438b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -16,7 +16,6 @@ public function run() $this->call(EntityEventTypeSeeder::class); $this->call(EntityTypesTableSeeder::class); $this->call(PresetTypeTableSeeder::class); - //$this->call(RpgSystemsTableSeeder::class); $this->call(GameSystemSeeder::class); $this->call(ThemesTableSeeder::class); $this->call(RolesTableSeeder::class); diff --git a/lang/ca/campaigns.php b/lang/ca/campaigns.php index 503cfddc4e..731c8f8e5c 100644 --- a/lang/ca/campaigns.php +++ b/lang/ca/campaigns.php @@ -57,7 +57,6 @@ 'public' => 'Visibilitat de la campanya', 'public_campaign_filters' => 'Filtres de les campanyes públiques', 'related_visibility' => 'Visibilitat dels elements relacionats', - 'rpg_system' => 'Sistemes RPG', 'superboosted' => 'Supermillorada per', 'system' => 'Sistema', 'theme' => 'Tema', @@ -372,7 +371,6 @@ 'connections' => 'Interfície per defecte de les connexions de l\'entitat', 'entity_history' => 'Registre històric de l\'entitat', 'entity_image' => 'Imatge de l\'entitat', - 'family_toolip' => 'Família del personatge', 'member_list' => 'Llista de membres de la campanya', 'nested' => 'Disposició per defecte de les llistes', 'post_collapsed' => 'Col·lapsar/expandir les noves anotacions d\'entitat', diff --git a/lang/de/campaigns.php b/lang/de/campaigns.php index fc832effe6..37e8a33a7e 100644 --- a/lang/de/campaigns.php +++ b/lang/de/campaigns.php @@ -68,10 +68,10 @@ 'public' => 'Sichtbarkeit der Kampagne', 'public_campaign_filters' => 'Öffentliche Kampagnenfilter', 'related_visibility' => 'Verwandte Elemente Sichtbarkeit', - 'rpg_system' => 'Rollenspielsysteme', 'superboosted' => 'supergeboosted von', 'system' => 'System', 'theme' => 'Thema', + 'vanity' => 'Vanity-URL', 'visibility' => 'Sichtbarkeit', ], 'following' => 'Abonniert', @@ -299,6 +299,11 @@ 'delete' => 'Entfernen', 'edit' => 'Bearbeiten', 'entity-note' => 'Notizen', + 'gallery' => [ + 'browse' => 'Durchsuche', + 'manage' => 'Volle Kontrolle', + 'upload' => 'Hochladen', + ], 'manage' => 'Verwalten', 'members' => 'Mitglieder', 'permission' => 'Verwalte Berechtigungen', @@ -311,6 +316,11 @@ 'delete' => 'Erlauben Sie das Entfernen aller Objekte dieses Typs.', 'edit' => 'Bearbeitung aller Objekte dieses Typs zulassen.', 'entity_note' => 'Auf diese Weise können Benutzer ohne Bearbeitungsberechtigung für ein Objekt Objektsnotizen hinzufügen.', + 'gallery' => [ + 'browse' => 'Ermögliche das Anzeigen der Galerie und das Festlegen des Bilds eines Objekts aus der Galerie.', + 'manage' => 'Erlaube alles in der Galerie so, wie es ein Administrator kann, einschließlich der Bearbeitung und Löschung von Bildern.', + 'upload' => 'Ermöglicht das Hochladen von Bildern in die Galerie. Die von dir hochgeladenen Bilder werden nur angezeigt, wenn sie nicht mit der Durchsuchungsberechtigung kombiniert sind.', + ], 'manage' => 'Erlauben Sie die Bearbeitung der Kampagne wie ein Kampagnenadministrator, ohne dass die Mitglieder die Kampagne löschen können.', 'members' => 'Erlauben Sie, neue Mitglieder zur Kampagne einzuladen.', 'permission' => 'Erlaube Einstellungsberechtigungen für Objekte dieses Typs, die sie bearbeiten können.', @@ -367,6 +377,7 @@ ], 'helpers' => [ 'abilities' => 'Erstellen Sie Fähigkeiten, seien es Talente, Zauber oder Kräfte, die Objekten zugewiesen werden können.', + 'bookmarks' => 'Erstelle Lesezeichen für Objekte oder gefilterte Listen, die in der Seitenleiste angezeigt werden.', 'calendars' => 'Der Ort, um die Kalender deiner Welt zu erstellen.', 'characters' => 'Die Leute, die deine Welt bevölkern.', 'conversations' => 'Fiktive Gespräche zwischen Charakteren oder zwischen Kampagnennutzern.', @@ -407,10 +418,15 @@ 'achievements' => 'Erfolge', 'applications' => 'Bewerbungen', 'campaign' => 'Kampagne', + 'customisation' => 'Anpassung', + 'data' => 'Daten', 'default-images' => 'Standardbilder', 'export' => 'Export', + 'import' => 'Importieren', 'information' => 'Informationen', + 'management' => 'Management', 'members' => 'Mitglieder', + 'modules' => 'Module', 'plugins' => 'Plugins', 'recovery' => 'Wiederherstellen', 'roles' => 'Rollen', @@ -441,7 +457,6 @@ 'connections_mode' => 'Standard Beziehung-Explorer für Beobachter', 'entity_history' => 'Verlaufsprotokolle des Objekts', 'entity_image' => 'Objekt Portrait', - 'family_toolip' => 'Die Familie des Charakters', 'member_list' => 'Mitgliederliste der Kampagne', 'nested' => 'Standardlistenlayout', 'post_collapsed' => 'Neuer Post-Standardwert für eingeklappteWerte', diff --git a/lang/de/footer.php b/lang/de/footer.php index 9c20187a99..49b00f42ea 100644 --- a/lang/de/footer.php +++ b/lang/de/footer.php @@ -7,7 +7,10 @@ 'community' => 'Community', 'company' => 'Firma', 'contact' => 'Kontakt', + 'copyright' => 'Urheberrecht :copy :year Owlchester SNC', 'documentation' => 'Dokumentation', + 'features' => 'Besonderheiten', + 'kb' => 'Wissensbasis', 'language-switcher' => [ 'other' => 'andere Sprachen', 'title' => 'Wähle deine Sprache', @@ -17,6 +20,7 @@ 'platform' => 'Plattform', 'premium' => 'Premium Kampagnen', 'press-kit' => 'Pressemappe', + 'pricing' => 'Preisgestaltung', 'privacy' => 'Privatsphäre', 'public-campaigns' => 'Öffentliche Kampagnen', 'resources' => 'Ressourcen', diff --git a/lang/en/calendars.php b/lang/en/calendars.php index e63b99a4a9..2d78ad4d7d 100644 --- a/lang/en/calendars.php +++ b/lang/en/calendars.php @@ -61,6 +61,10 @@ 'show_before' => 'Show before today', ], 'start' => '(start)', + 'bulks' => [ + 'patch' => '{1} Updated :count event.|[2,*] Updated :count events.', + 'delete' => '{1} Deleted :count event.|[2,*] Deleted :count events.', + ], ], 'fields' => [ 'colour' => 'Colour', diff --git a/lang/en/campaigns.php b/lang/en/campaigns.php index d8b3daa2a6..907ad800d5 100644 --- a/lang/en/campaigns.php +++ b/lang/en/campaigns.php @@ -56,6 +56,7 @@ 'genre' => 'Genre(s)', 'header_image' => 'Campaign dashboard background image', 'image' => 'Sidebar image', + 'is_discreet' => 'Discreet', 'locale' => 'Locale', 'name' => 'Name', 'nested' => 'Default entity lists to nested when available', @@ -64,13 +65,12 @@ 'post_collapsed' => 'New posts on entities are collapsed by default.', 'premium' => 'Premium unlocked by :name', 'public' => 'Campaign visibility', - 'public_campaign_filters' => 'Public Campaign Filters', + 'public_campaign_filters' => 'Public Filters', 'related_visibility' => 'Related Elements Visibility', - 'rpg_system' => 'RPG Systems', 'superboosted' => 'Superboosted by', 'system' => 'System', 'theme' => 'Theme', - 'vanity' => 'Vantity URL', + 'vanity' => 'Vanity URL', 'visibility' => 'Visibility', ], 'following' => 'Following', @@ -85,11 +85,13 @@ 'header_image' => 'Image displayed as a background in the campaign header dashboard widget.', 'hide_history' => 'If enabled, only members of the campaign\'s :admin role will have access to an entity\'s history (log of changes).', 'hide_members' => 'If enabled, only members of the campaign\'s :admin role will have access to the list of the campaign\'s members.', + 'is_discreet' => 'If enabled when the campaign is public, it won\'t be displayed in the :public-campaigns.', + 'is_discreet_locked' => 'Premium campaigns can be set to be publicly visible but not show up in the :public-campaigns.', 'locale' => 'The language your campaign is written in. This is used for generating content and grouping public campaigns.', 'name' => 'Your campaign/world can have any name as long as it contains at least 4 letters or numbers.', 'no_entry' => 'Looks like the campaign doesn\'t have a description yet! Let\'s fix that.', 'permissions_tab' => 'Control the default privacy and visibility settings of new elements with the following options.', - 'premium' => 'Some features are available because this campaign\'s premium features are unlocked. Find out more on the :settings page.', + 'premium' => 'Some features require premium features te be unlocked. Find out more about :settings.', 'public_campaign_filters' => 'Help others find the campaign among other public campaigns by providing the following information.', 'public_no_visibility' => 'Heads up! The campaign is public, but the campaign\'s public role can\'t access anything. :fix.', 'related_visibility' => 'Default Visibility value when creating a new element with this field (posts, relations, abilities, etc)', @@ -393,7 +395,7 @@ ], ], 'sharing' => [ - 'filters' => 'Public campaigns are visible on the :public-campaigns page. Filling out these fields makes it easier for people to discover the campaign.', + 'filters' => 'Public campaigns are visible on the :public-campaigns page. Filling out these fields makes it easier for others to discover it.', 'language' => 'The language in which the campaign\'s content is written.', 'system' => 'If playing a TTRPG, the system used to play in the campaign.', ], @@ -449,7 +451,6 @@ 'connections_mode' => 'Default relations explorer mode', 'entity_history' => 'Entity\'s history logs', 'entity_image' => 'Entity\'s image', - 'family_toolip' => 'Character\'s family', 'member_list' => 'Campaign\'s member list', 'nested' => 'Default lists layout', 'post_collapsed' => 'New post default collapsed value', diff --git a/lang/en/campaigns/default-images.php b/lang/en/campaigns/default-images.php index ea7c3b192f..5a1af166a6 100644 --- a/lang/en/campaigns/default-images.php +++ b/lang/en/campaigns/default-images.php @@ -7,7 +7,7 @@ 'call-to-action' => 'Upload a custom thumbnail for all the characters, locations, or other entities of the campaign. These images are then shown on various lists.', 'create' => [ 'error' => 'Error saving the new default entity thumbnails. Is :type already set?', - 'success' => 'New thumnbail for :type created.', + 'success' => 'New thumbnail for :type created.', 'title' => 'New default thumbnail', ], 'destroy' => [ diff --git a/lang/en/campaigns/public.php b/lang/en/campaigns/public.php index b5ad564078..cfb5a0dd3a 100644 --- a/lang/en/campaigns/public.php +++ b/lang/en/campaigns/public.php @@ -2,7 +2,7 @@ return [ 'helpers' => [ - 'main' => 'Public campaigns are visible to all users that have a link to the campaign or through the :public-campaigns page. Permissions for users viewing the campaign this way is controlled by the campaign\'s :public-role role.', + 'main' => 'Campaigns can be set to either be public or private. Public campaigns are visible to all users that have a link to the campaign, and also show up on in the :public-campaigns. This setting only controls access to the campaign. Permissions to view content of the campaigns still need to be set up through the :public-role role.', ], 'title' => 'Change the campaign\'s visibility', 'update' => [ diff --git a/lang/en/creatures.php b/lang/en/creatures.php index 0abb6bddb0..132839b435 100644 --- a/lang/en/creatures.php +++ b/lang/en/creatures.php @@ -4,9 +4,15 @@ 'create' => [ 'title' => 'New Creature', ], + 'fields' => [ + 'is_extinct' => 'Extinct', + ], 'helpers' => [ 'nested_without' => 'Displaying all creatures that don\'t have a parent creature. Click on a row to see the children creatures.', ], + 'hints' => [ + 'is_extinct' => 'This creature is extinct.', + ], 'placeholders' => [ 'type' => 'Herbivore, Aquatic, Mythical', ], diff --git a/lang/en/crud.php b/lang/en/crud.php index b6da9df96a..6066d025eb 100644 --- a/lang/en/crud.php +++ b/lang/en/crud.php @@ -241,6 +241,7 @@ 'gallery_header' => 'If the entity has no header, display an image from the campaign gallery instead.', 'gallery_image' => 'If the entity has no image, display an image from the campaign gallery instead.', 'header_image' => 'This image is placed above the entity. For best results, use a wide image.', + 'image_dimension' => 'Recommended dimensions: :dimension pixels.', 'image_limitations' => 'Supported formats: :formats. Max file size: :size.', 'image_recommendation' => 'Recommended dimensions: :width by :height px.', 'is_star' => 'Pinned elements will appear on the entity\'s overview page.', diff --git a/lang/en/dashboard.php b/lang/en/dashboard.php index b4cb524f63..15aec23a18 100644 --- a/lang/en/dashboard.php +++ b/lang/en/dashboard.php @@ -155,6 +155,9 @@ 'helpers' => [ 'name' => 'You can reference the random entity\'s name with {name}', ], + 'type' => [ + 'all' => 'All' + ] ], 'recent' => [ 'advanced_filter' => 'Advanced filter', diff --git a/lang/en/notifications.php b/lang/en/notifications.php index 42a6f2bce0..7b80a3859c 100644 --- a/lang/en/notifications.php +++ b/lang/en/notifications.php @@ -49,8 +49,8 @@ 'title' => 'Clear notifications', ], 'features' => [ - 'rejected' => 'Your feature request :feature has been rejected, reason: :reason.', - 'approved' => 'Your feature request :feature has been approved.', + 'approved' => 'Your idea :feature has been approved.', + 'rejected' => 'Your idea :feature has been rejected, reason: :reason.', ], 'header' => 'You have :count notifications', 'index' => [ diff --git a/lang/en/tiers.php b/lang/en/tiers.php index 16ece12d30..c2e04787ff 100644 --- a/lang/en/tiers.php +++ b/lang/en/tiers.php @@ -3,12 +3,12 @@ return [ 'actions' => [ 'subscribe' => [ + 'choose' => 'Choose :tier', 'monthly' => ':tier monthly', 'yearly' => ':tier yearly', - 'choose' => 'Choose :tier', ], ], - 'current' => 'Current subscription', + 'current' => 'Current subscription', 'features' => [ 'api_requests' => 'Up to :amount API requests per min', 'boosters' => 'Campaign Boosters', @@ -24,16 +24,16 @@ 'vote_influence' => 'Influence the community vote', ], 'periods' => [ - 'monthly' => 'Monthly', - 'yearly' => 'Yearly', - 'billed_yearly' => 'billed yearly', - 'billed_monthly' => 'billed monthly', + 'billed_monthly' => 'billed monthly', + 'billed_yearly' => 'billed yearly', + 'monthly' => 'Monthly', + 'yearly' => 'Yearly', ], 'pricing' => ':currency :amount / month', 'ribbons' => [ 'best-value' => 'Best value', - 'popular' => 'Popular', 'current' => 'Current subscription', + 'popular' => 'Popular', ], 'toggle' => [ 'yearly' => 'Yearly (pay 10 months)', diff --git a/lang/es/campaigns.php b/lang/es/campaigns.php index dcbd956917..1f44fa7393 100644 --- a/lang/es/campaigns.php +++ b/lang/es/campaigns.php @@ -68,10 +68,10 @@ 'public' => 'Visibilidad de la campaña', 'public_campaign_filters' => 'Filtros de las campañas públicas', 'related_visibility' => 'Visibilidad de elementos relacionados', - 'rpg_system' => 'Sistemas RPG', 'superboosted' => 'Supermejorada por', 'system' => 'Sistema', 'theme' => 'Tema', + 'vanity' => 'URL personalizada', 'visibility' => 'Visibilidad', ], 'following' => 'Siguiendo', @@ -295,6 +295,11 @@ 'delete' => 'Eliminar', 'edit' => 'Editar', 'entity-note' => 'Notas de entidad', + 'gallery' => [ + 'browse' => 'Navegar', + 'manage' => 'Control absoluto', + 'upload' => 'Subir', + ], 'manage' => 'Configurar', 'members' => 'Miembros', 'permission' => 'Administrar permisos', @@ -307,6 +312,11 @@ 'delete' => 'Permite eliminar todas las entidades de este tipo.', 'edit' => 'Permite editar todas las entidades de este tipo.', 'entity_note' => 'Esto permite que los usuarios que no tengan permisos para editar una entidad puedan añadirle notas.', + 'gallery' => [ + 'browse' => 'Permite ver la galería y establecer la imagen de una entidad desde la galería.', + 'manage' => 'Permite todo en la galería como un administrador puede, incluyendo la edición y eliminación de imágenes.', + 'upload' => 'Permite subir imágenes a la galería. Sólo verá las imágenes que han subido si no se combina con el permiso de navegación.', + ], 'manage' => 'Permite editar la campaña como un administrador, excepto eliminar la campaña.', 'members' => 'Permite invitar nuevos miembros a la campaña.', 'permission' => 'Permite configurar los permisos de las entidades de este tipo que puedan editar.', @@ -363,6 +373,7 @@ ], 'helpers' => [ 'abilities' => 'Crea habilidades, proezas, hechizos o poderes y asígnalos a entidades.', + 'bookmarks' => 'Crea marcadores de entidades o listas filtradas que aparezcan en la barra lateral.', 'calendars' => 'El sitio para definir los calendarios de tu mundo.', 'characters' => 'Las personas que viven en tu mundo.', 'conversations' => 'Conversaciones ficticias entre personajes o entre usuarios de la campaña.', @@ -403,10 +414,15 @@ 'achievements' => 'Logros', 'applications' => 'Solicitudes', 'campaign' => 'Campaña', + 'customisation' => 'Personalización', + 'data' => 'Datos', 'default-images' => 'Imágenes por defecto', 'export' => 'Exportar', + 'import' => 'Importar', 'information' => 'Información', + 'management' => 'Gestión', 'members' => 'Miembros', + 'modules' => 'Módulos', 'plugins' => 'Plugins', 'recovery' => 'Recuperación', 'roles' => 'Roles', @@ -437,7 +453,6 @@ 'connections_mode' => 'Modo del explorador de relaciones predeterminado', 'entity_history' => 'Registros históricos de la entidad', 'entity_image' => 'Imagen de la entidad', - 'family_toolip' => 'Familia del personaje', 'member_list' => 'Lista de miembros de la campaña', 'nested' => 'Disposición por defecto de las listas', 'post_collapsed' => 'Valor de colapsado/expandido por defecto de los posts', diff --git a/lang/es/campaigns/export.php b/lang/es/campaigns/export.php index 2f634345e1..2b4d0e2e81 100644 --- a/lang/es/campaigns/export.php +++ b/lang/es/campaigns/export.php @@ -1,13 +1,30 @@ [ + 'actions' => [ + 'download' => 'Descargar', 'export' => 'Exportar los datos de la campaña', ], - 'errors' => [ + 'confirm' => [ + 'title' => 'Confirmación de exportación', + 'warning' => 'Estás a punto de exportar los datos de la campaña. Este proceso puede llevar mucho tiempo dependiendo del tamaño de la campaña. Puedes seguir utilizando Kanka mientras nuestros servidores generan la exportación.', + ], + 'errors' => [ 'limit' => 'La campaña ya se ha exportado una vez hoy. Vuelva a intentarlo mañana.', ], - 'helpers' => [], - 'success' => 'Se está preparando la exportación de la campaña. Recibirás una notificación en Kanka cuando esté lista para descargar.', - 'title' => 'Exportación de campaña', + 'expired' => 'Enlace expirado', + 'helpers' => [], + 'progress' => 'Progreso', + 'size' => 'Tamaño', + 'status' => [ + 'failed' => 'Fallida', + 'finished' => 'Terminada', + 'running' => 'Ejecutándose', + 'scheduled' => 'Programada', + ], + 'success' => 'Se está preparando la exportación de la campaña. Recibirás una notificación en Kanka cuando esté lista para descargar.', + 'title' => 'Exportación de campaña', + 'type' => 'Tipo', + 'type_assets' => 'Activos', + 'type_entities' => 'Entidades', ]; diff --git a/lang/es/campaigns/gallery.php b/lang/es/campaigns/gallery.php index 91e069f7e1..60a2b19ea1 100644 --- a/lang/es/campaigns/gallery.php +++ b/lang/es/campaigns/gallery.php @@ -13,15 +13,18 @@ 'bulk' => [ 'destroy' => [ 'confirm' => '¿Estás seguro de que quieres eliminar permanentemente los elementos seleccionados? Esta acción no se puede deshacer.', + 'success' => '{0}Ningún archivo eliminado.|{1}Un archivo eliminado.|{2,*}:count archivos eliminados.', ], ], 'cta' => 'Gestiona y reutiliza las imágenes a lo largo de la campaña.', 'destroy' => [ + 'folder' => 'Carpeta :name eliminada.', 'success' => 'Imagen :name borrada.', ], 'errors' => [ 'max' => 'Por favor, sólo seleccione hasta :count archivos a la vez.', 'permissions' => 'A tus roles de campaña les falta el permiso :permission para poder subir imágenes a la galería de la campaña.', + 'storage' => 'No hay espacio suficiente para almacenar las imágenes seleccionadas. Espacio de almacenamiento disponible: :available.', ], 'fields' => [ 'created_by' => 'Subida por', diff --git a/lang/es/campaigns/import.php b/lang/es/campaigns/import.php new file mode 100644 index 0000000000..b6fd4a4b6b --- /dev/null +++ b/lang/es/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Subir la exportación', + ], + 'description' => 'Importa las entidades, entradas, atributos, la galería y otros elementos de una exportación de campaña a esta campaña. Esto ocurre en el backend y puede llevar un rato, así que tómate un café. Tú y los otros administradores de campaña serán notificados cuando el proceso de importación haya terminado.', + 'fields' => [ + 'file' => 'Exportar archivo ZIP', + 'updated' => 'Última actualización', + ], + 'limitation' => 'Sólo se aceptan archivos zip. :size máximo.', + 'status' => [ + 'failed' => 'Fallida', + 'finished' => 'Terminada', + 'queued' => 'En cola', + 'running' => 'Ejecutándose', + ], + 'title' => 'Importar', +]; diff --git a/lang/es/campaigns/vanity.php b/lang/es/campaigns/vanity.php new file mode 100644 index 0000000000..d63a472b3a --- /dev/null +++ b/lang/es/campaigns/vanity.php @@ -0,0 +1,9 @@ + '¡El nombre :vanity está disponible!', + 'helper' => 'Haz que la campaña destaque con un nombre único en la URL. Por ejemplo, en lugar de aparecer como :default, haz que la URL de cada página de la campaña aparezca como :example. Este campo sólo se puede configurar una vez y es permanente. Obtenga más información sobre esta función en nuestra sección :learn-more.', + 'rule' => 'El campo :field necesita al menos un carácter alfabético.', + 'rule2' => 'El campo :field no permite el siguiente carácter: /.', + 'set' => 'La URL de vanidad de la campaña se ha establecido permanentemente como :vanity.', +]; diff --git a/lang/es/confirm/editing.php b/lang/es/confirm/editing.php new file mode 100644 index 0000000000..4106b694bb --- /dev/null +++ b/lang/es/confirm/editing.php @@ -0,0 +1,10 @@ + 'Regresar', + 'description' => 'Parece que otra persona está editando esta página. ¿Quieres regresar o ignorar esta advertencia, con el riesgo de perder datos?', + 'ignore' => 'Editar de todos modos', + 'members' => 'Miembros editando esta página:', + 'title' => 'Advertencia', + 'user' => ':user desde :since', +]; diff --git a/lang/es/entities/notes.php b/lang/es/entities/notes.php index c89c2a0ead..de3d341067 100644 --- a/lang/es/entities/notes.php +++ b/lang/es/entities/notes.php @@ -44,6 +44,15 @@ 'index' => [ 'title' => 'Posts de :name', ], + 'move' => [ + 'copy' => 'Conserva una copia del post en la entidad actual.', + 'copy_success' => 'Post :name movido a :entity exitosamente.', + 'copy_title' => 'Guarda una copia', + 'description' => 'Selecciona una entidad a la que mover este mensaje', + 'entity' => 'Entidad objetivo', + 'move' => 'Mover a otra entidad', + 'move_success' => 'Post :name movido a :entity con éxito.', + ], 'placeholders' => [ 'name' => 'Nombre del post, observación...', ], @@ -51,4 +60,8 @@ 'advanced' => 'Permisos avanzados', 'title' => 'Post :name de :entity', ], + 'states' => [ + 'collapsed' => 'Colapsado', + 'expanded' => 'Expandido', + ], ]; diff --git a/lang/es/entities/relations.php b/lang/es/entities/relations.php index 4cfcce1edb..4e60c79220 100644 --- a/lang/es/entities/relations.php +++ b/lang/es/entities/relations.php @@ -7,6 +7,16 @@ ], 'bulk' => [ 'delete' => '{1} Se ha eliminado :count relación.|[2,*] Se han eliminado :count relaciones.', + 'fields' => [ + 'delete_mirrored' => 'Borrar duplicado', + 'unmirror' => 'Desenlazar duplicado', + 'update_mirrored' => 'Actualizar duplicado', + ], + 'helpers' => [ + 'delete_mirrored' => 'Elimina también las conexiones duplicadas.', + 'unmirror' => 'Desenlazar conexiones duplicadas.', + 'update_mirrored' => 'Actualizar las conexiones duplicadas.', + ], 'success' => [ 'editing' => '{1} Se ha actualizado :count relación.|[2,*] Se han actualizado :count relaciones.', 'editing_partial' => '{1} Se ha eliminado :count/:total relación.|[2,*] Se han eliminado :count/:total relaciones.', @@ -20,8 +30,9 @@ 'timeline_element' => 'Elemento de una línea de tiempo', ], 'create' => [ - 'new_title' => 'Nueva relación', - 'title' => 'Nueva relación para :name', + 'new_title' => 'Nueva relación', + 'success_bulk' => '{1} Se ha añadido :count conexión a :entity.|[2,*] Se han añadido :count conexiones a :entity.', + 'title' => 'Nueva relación para :name', ], 'delete_mirrored' => [ 'helper' => 'Esta conexión se refleja en la entidad de destino. Seleccione esta opción para eliminar también la conexión duplicada.', @@ -34,6 +45,7 @@ 'fields' => [ 'attitude' => 'Actitud', 'connection' => 'Conexión', + 'is_pinned' => 'Fijado', 'owner' => 'Fuente', 'relation' => 'Relación', 'target' => 'Objetivo', @@ -41,6 +53,10 @@ 'two_way' => 'Reflejar relación', 'unmirror' => 'Desenlaza esta conexión.', ], + 'filters' => [ + 'connection' => 'Relación de conexión', + 'name' => 'Objetivo de la conexión', + ], 'helper' => 'Crea relaciones entre entidades y configura su actitud y visibilidad. Las relaciones también se pueden fijar al menú de la entidad.', 'helpers' => [ 'no_relations' => 'Esta entidad no tiene actualmente ninguna conexión con otras entidades de la campaña.', diff --git a/lang/es/footer.php b/lang/es/footer.php index 6254cfb5db..95bcfe3a2c 100644 --- a/lang/es/footer.php +++ b/lang/es/footer.php @@ -1,17 +1,28 @@ 'Acerca de nosotros', 'blog' => 'Blog', 'boosters' => 'Potenciadores', + 'community' => 'Comunidad', 'company' => 'Empresa', + 'contact' => 'Contacto', + 'copyright' => 'Copyright :copy :year Owlchester SNC', + 'documentation' => 'Documentación', + 'features' => 'Características', + 'kb' => 'Base de conocimientos', 'language-switcher' => [ 'other' => 'Otros idiomas', 'title' => 'Selecciona tu idioma', ], + 'marketplace' => 'Mercado', + 'newsletter' => 'Boletín de noticias', 'platform' => 'Plataforma', 'premium' => 'Campañas Premium', 'press-kit' => 'Kit de prensa', + 'pricing' => 'Precios', 'privacy' => 'Privacidad', + 'public-campaigns' => 'Campañas públicas', 'resources' => 'Recursos', 'security' => 'Seguridad', 'server_time' => 'Hora del servidor: :time', diff --git a/lang/es/settings.php b/lang/es/settings.php index 3aa7aaf451..5be172f050 100644 --- a/lang/es/settings.php +++ b/lang/es/settings.php @@ -2,6 +2,23 @@ return [ 'account' => [ + '2fa' => [ + 'actions' => [ + 'disable' => 'Deshabilitar la autenticación de dos factores', + 'finish' => 'Finalizar la configuración e iniciar sesión', + ], + 'activation_helper' => 'Para terminar de configurar la autenticación de dos factores de tu cuenta, sigue estas instrucciones.', + 'disable' => [ + 'helper' => 'Si quieres desactivar la autenticación de dos factores, haz clic en el botón de abajo. Ten en cuenta que esto dejará tu cuenta vulnerable a cualquiera que conozca tus datos de acceso.', + 'title' => 'Deshabilitar la autenticación de dos factores', + ], + 'enable_instructions' => 'Para iniciar el proceso de activación, genera tu código QR de autenticación y escanéalo en la aplicación Google Authenticator (:ios, :android) u otra aplicación de autenticación similar.', + 'enabled' => 'La autenticación de dos factores está actualmente activada en su cuenta.', + 'error_enable' => 'Código inválido, inténtalo de nuevo', + 'fields' => [ + 'otp' => 'Introduce la contraseña de un solo uso (OTP) proporcionada por la aplicación de autenticación.', + ], + ], 'actions' => [ 'social' => 'Cambiar a inicio de sesión en Kanka', 'update_email' => 'Actualizar email', diff --git a/lang/es/settings/premium.php b/lang/es/settings/premium.php new file mode 100644 index 0000000000..c6b8bb047a --- /dev/null +++ b/lang/es/settings/premium.php @@ -0,0 +1,21 @@ + [ + 'remove' => 'Remover premium', + 'unlock' => 'Convertirse en Premium', + ], + 'create' => [ + 'actions' => [ + 'confirm' => '¡Convertirse en premium!', + ], + 'confirm' => '¡Qué emocionante! Estás a punto de desbloquear funciones premium para :campaign. Esto utilizará una de tus campañas premium disponibles.', + 'duration' => 'Las campañas Premium permanecen así hasta que lo retires manualmente, o cuando finalice tu suscripción.', + 'pitch' => 'Conviertete en suscriptor para desbloquear campañas premium.', + 'success' => 'La campaña :campaign ahora es premium. ¡Disfruta de todas las nuevas e increíbles funciones!', + ], + 'exceptions' => [ + 'already' => 'Ya se han desbloqueado las funciones Premium para esta campaña.', + 'out-of-stock' => 'No tienes suficientes campañas premium disponibles para activar esta campaña. Elimina el estado premium de otra campaña o :upgrade.', + ], +]; diff --git a/lang/es/timelines/elements.php b/lang/es/timelines/elements.php index 1880f8128c..837c8d0782 100644 --- a/lang/es/timelines/elements.php +++ b/lang/es/timelines/elements.php @@ -1,6 +1,10 @@ [ + 'copy_with_name' => 'Copiar mención avanzada con el nombre del elemento', + 'success' => 'Mención avanzada al elemento copiado en el portapapeles.', + ], 'create' => [ 'success' => 'Elemento añadido a la línea de tiempo.', 'title' => 'Nuevo elemento cronológico', @@ -13,13 +17,17 @@ 'title' => 'Editar elemento cronológico', ], 'fields' => [ - 'date' => 'Fecha', - 'era' => 'Era', - 'icon' => 'Icono', + 'date' => 'Fecha', + 'era' => 'Era', + 'icon' => 'Icono', + 'use_entity_entry' => 'Muestra la información de la entidad adjunta a continuación. El texto de este elemento se mostrará primero si está presente.', + 'use_event_date' => 'Utiliza la fecha del evento vinculado.', ], 'helpers' => [ + 'date' => 'Si el elemento está vinculado a una entidad evento, muestra la fecha del evento.', 'entity_is_private' => 'La entidad de este elemento es privada.', 'icon' => 'Copia el HTML de un icono de :fontawesome o :rpgawesome.', + 'is_collapsed' => 'El elemento se muestra colapsado por defecto.', ], 'placeholders' => [ 'date' => '22 de marzo, 1332-1337...', diff --git a/lang/es/users/profile.php b/lang/es/users/profile.php new file mode 100644 index 0000000000..0c091576b3 --- /dev/null +++ b/lang/es/users/profile.php @@ -0,0 +1,19 @@ + [ + 'wordsmith' => 'Un verdadero artífice de la palabra. Ganador de un concurso de worldbuilding.', + ], + 'fields' => [ + 'achievements' => 'Logros', + 'banned' => 'Este usuario ha sido baneado', + 'entities_created' => 'Entidades creadas :help :count', + 'member_since' => 'Miembro desde :date', + 'public_campaigns' => 'Campañas públicas', + 'subscriber_since' => 'Suscriptor desde :date', + ], + 'helpers' => [ + 'entities_created' => 'Este valor se recalcula cada día.', + ], + 'title' => 'Perfil de :name', +]; diff --git a/lang/fr/campaigns.php b/lang/fr/campaigns.php index 83929dae80..c9dc359aa8 100644 --- a/lang/fr/campaigns.php +++ b/lang/fr/campaigns.php @@ -58,6 +58,7 @@ 'genre' => 'Genre(s)', 'header_image' => 'Image de fond pour le tableau de bord', 'image' => 'Image', + 'is_discreet' => 'Discrète', 'locale' => 'Langue', 'name' => 'Nom', 'nested' => 'Afficher les listes d\'entités de manière imbriquée par défaut', @@ -68,7 +69,6 @@ 'public' => 'Visibilité de la campagne', 'public_campaign_filters' => 'Filtres pour les campagnes publiques', 'related_visibility' => 'Visibilité des éléments liés', - 'rpg_system' => 'Système RPG', 'superboosted' => 'Superboosté par', 'system' => 'Système', 'theme' => 'Thème', @@ -87,6 +87,8 @@ 'header_image' => 'Image affichée en arrière-plan de l\'en-tête de campagne sur le tableau de bord.', 'hide_history' => 'Activer cette option pour cacher l\'historique d\'une entité aux membres qui ne sont pas dans le groupe admin de la campagne.', 'hide_members' => 'Activer cette option pour cacher la liste des membres de la campagne aux membres qui ne sont pas dans le groupe admin de celle-ci.', + 'is_discreet' => 'Si activé lorsque la campagne est publique, celle-ci ne sera pas affichée dans les :public-campaigns.', + 'is_discreet_locked' => 'Les campagnes premiums peuvent être visible publiquement mais ne pas être affichées dans les :public-campaigns.', 'locale' => 'La langue dans laquelle la campagne est écrite. Ceci est utilisé pour générer du contenu ainsi que pour grouper les campagnes publiques.', 'name' => 'Le nom de la campagne doit contenir au minimum 4 caractères.', 'no_entry' => 'La campagne n\'a pas encore de description! Corrigeons cela.', @@ -454,7 +456,6 @@ 'connections_mode' => 'Mode par défaut d\'outil de visualisation de relation', 'entity_history' => 'Historique d\'une entité', 'entity_image' => 'Image d\'une entité', - 'family_toolip' => 'Famille d\'un personnage', 'member_list' => 'Liste des membres de la campagne', 'nested' => 'Listes d\'entités', 'post_collapsed' => 'Affichage par défaut de nouvelle entrées', diff --git a/lang/fr/creatures.php b/lang/fr/creatures.php index e5b023fafb..8439c39f0f 100644 --- a/lang/fr/creatures.php +++ b/lang/fr/creatures.php @@ -5,10 +5,15 @@ 'title' => 'Nouvelle créature', ], 'creatures' => [], - 'fields' => [], + 'fields' => [ + 'is_extinct' => 'Éteinte', + ], 'helpers' => [ 'nested_without' => 'Affichage de toutes les créatures qui n\'ont pas de créature parent. Clique sur une rangée pour voir les créatures enfants.', ], + 'hints' => [ + 'is_extinct' => 'Cette créature est éteinte', + ], 'placeholders' => [ 'type' => 'Herbivore, aquatique, mythique', ], diff --git a/lang/fr/footer.php b/lang/fr/footer.php index 9bfb518e08..9682061870 100644 --- a/lang/fr/footer.php +++ b/lang/fr/footer.php @@ -24,6 +24,7 @@ 'privacy' => 'Confidentialité', 'public-campaigns' => 'Campagnes publiques', 'resources' => 'Ressources', + 'roadmap' => 'Feuille de route', 'security' => 'Sécurité', 'server_time' => 'Heure du serveur: :time', 'status' => 'Status de service', diff --git a/lang/fr/notifications.php b/lang/fr/notifications.php index 38d1c0474d..e089d57332 100644 --- a/lang/fr/notifications.php +++ b/lang/fr/notifications.php @@ -48,6 +48,10 @@ 'success' => 'Notifications supprimées.', 'title' => 'Vider les notifications', ], + 'features' => [ + 'approved' => 'Ton idée :feature a été acceptée.', + 'rejected' => 'Ton idée :feature a été rejetée, raison: :reason.', + ], 'header' => ':count notifications', 'index' => [ 'title' => 'Notifications', diff --git a/lang/fr/tiers.php b/lang/fr/tiers.php index 61810baad6..ed0e7c3ba3 100644 --- a/lang/fr/tiers.php +++ b/lang/fr/tiers.php @@ -3,6 +3,7 @@ return [ 'actions' => [ 'subscribe' => [ + 'choose' => 'Choisir :tier', 'monthly' => ':tier mensuel', 'yearly' => ':tier annuel', ], @@ -23,12 +24,15 @@ 'vote_influence' => 'Influence sur les votes communautaires', ], 'periods' => [ - 'monthly' => 'Mensuel', - 'yearly' => 'Annuel', + 'billed_monthly' => 'facturé mensuellement', + 'billed_yearly' => 'facturé annuellement', + 'monthly' => 'Mensuel', + 'yearly' => 'Annuel', ], 'pricing' => ':currency :amount / mois', 'ribbons' => [ 'best-value' => 'Meilleure valeur', + 'current' => 'Abonnement actuel', 'popular' => 'Populaire', ], 'toggle' => [ diff --git a/lang/gl/campaigns.php b/lang/gl/campaigns.php index 0e900fe048..232d1eb5e8 100644 --- a/lang/gl/campaigns.php +++ b/lang/gl/campaigns.php @@ -65,7 +65,6 @@ 'public' => 'Visibilidade da campaña', 'public_campaign_filters' => 'Filtros de campañas públicas', 'related_visibility' => 'Visibilidade de elementos relacionados', - 'rpg_system' => 'Sistemas RPG', 'superboosted' => 'Superpotenciada por', 'system' => 'Sistema', 'theme' => 'Tema', @@ -415,7 +414,6 @@ 'connections_mode' => 'Modo por defecto do explorador de relacións', 'entity_history' => 'Historial de cambios da entidade', 'entity_image' => 'Imaxe da entidade', - 'family_toolip' => 'Familia da personaxe', 'member_list' => 'Lista de integrantes da campaña', 'nested' => 'Disposición por defecto das listas', 'post_collapsed' => 'Valor de colapsada/expandida por defecto das novas entradas.', diff --git a/lang/hr/campaigns.php b/lang/hr/campaigns.php index 9c44764ca5..09875bcc44 100644 --- a/lang/hr/campaigns.php +++ b/lang/hr/campaigns.php @@ -51,7 +51,6 @@ 'open' => 'Otvoreno za prijave', 'public_campaign_filters' => 'Filteri javnih kampanja', 'related_visibility' => 'Vidljivost povezanih elemenata', - 'rpg_system' => 'Sustav igranja', 'superboosted' => 'Super pojačali', 'system' => 'Sustav', 'theme' => 'Tema', diff --git a/lang/hu/campaigns.php b/lang/hu/campaigns.php index 66bf1687fd..f8b1433327 100644 --- a/lang/hu/campaigns.php +++ b/lang/hu/campaigns.php @@ -53,7 +53,6 @@ 'open' => 'Megnyitás az alkalmazások számára', 'public_campaign_filters' => 'Publikus kampány szűrők', 'related_visibility' => 'Kapcsolódó elemek láthatósága', - 'rpg_system' => 'Szerepjáték rendszerek', 'superboosted' => 'Szupererősítette', 'system' => 'Rendszer', 'theme' => 'Téma', diff --git a/lang/it/campaigns.php b/lang/it/campaigns.php index ab4da50d49..24a9df6e5b 100644 --- a/lang/it/campaigns.php +++ b/lang/it/campaigns.php @@ -67,7 +67,6 @@ 'public' => 'Visibilità della campagna', 'public_campaign_filters' => 'Filtri Campagna Pubblica', 'related_visibility' => 'Visibilità degli Elementi Correlati', - 'rpg_system' => 'Sistema RPG', 'superboosted' => 'Superpotenziato da', 'system' => 'Sistema', 'theme' => 'Tema', @@ -433,7 +432,6 @@ 'connections_mode' => 'Modalità Esploratore di Relazioni predefinita', 'entity_history' => 'Cronologia dell\'entità', 'entity_image' => 'Immagine dell\'entità', - 'family_toolip' => 'Famiglia del personaggio', 'member_list' => 'Lista dei membri della campagna', 'nested' => 'Disposizione predefinita degli elenchi', 'post_collapsed' => 'Valore predefinito del nuovo post ripiegato', diff --git a/lang/nl/campaigns.php b/lang/nl/campaigns.php index dc74678127..0e3f45f1a1 100644 --- a/lang/nl/campaigns.php +++ b/lang/nl/campaigns.php @@ -51,7 +51,6 @@ 'open' => 'Open voor sollicitaties', 'public_campaign_filters' => 'Openbare Campaign Filters', 'related_visibility' => 'Gerelateerde Elementen Zichtbaarheid', - 'rpg_system' => 'RPG Systemen', 'superboosted' => 'Superboosted door', 'system' => 'Systeem', 'theme' => 'Thema', diff --git a/lang/pl/campaigns.php b/lang/pl/campaigns.php index 2010498bda..3e982b7b70 100644 --- a/lang/pl/campaigns.php +++ b/lang/pl/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Widoczność kampanii', 'public_campaign_filters' => 'Filtry kampanii publicznych', 'related_visibility' => 'Widoczność powiązanych elementów', - 'rpg_system' => 'Systemy RPG', 'superboosted' => 'Turbodoładowana przez', 'system' => 'System', 'theme' => 'Motyw', @@ -296,6 +295,11 @@ 'delete' => 'Usuwanie', 'edit' => 'Edytowanie', 'entity-note' => 'Komentowanie', + 'gallery' => [ + 'browse' => 'Przeglądanie', + 'manage' => 'Pełna kontrola', + 'upload' => 'Dodawanie', + ], 'manage' => 'Zarządzaj', 'members' => 'Uczestnicy', 'permission' => 'Uprawnienia', @@ -308,6 +312,11 @@ 'delete' => 'Pozwala usuwać elementy danego rodzaju.', 'edit' => 'Pozwala modyfikować elementy danego rodzaju.', 'entity_note' => 'Pozwala uczestnikom nie posiadającym praw edycji dodawać komentarze do elementów kampanii.', + 'gallery' => [ + 'browse' => 'Pozwala przeglądać galerię i dodawać znajdujące się w niej orazy do elementów.', + 'manage' => 'Pozwala wykonywać wszystkie działania w galerii, w tym edytować i usuwać obrazy.', + 'upload' => 'Pozwala dodawać obrazy do galerii. Jeżeli uczestnik nie posiada też uprawnień do przeglądania, będzie widzieć tylko obrazy dodane samodzielnie.', + ], 'manage' => 'Pozwala edytować kampanię jakby uczestnik był administratorem, ale nie daje uprawnień by ją usunąć.', 'members' => 'Pozwala zapraszać nowych uczestników kampanii.', 'permission' => 'Pozwala zarządzać uprawnieniami tych elementów danego typu, które uczestnik może też edytować.', @@ -406,8 +415,10 @@ 'applications' => 'Zgłoszenia', 'campaign' => 'Kampania', 'customisation' => 'Dostosowanie', + 'data' => 'Dane', 'default-images' => 'Domyślne ikony', 'export' => 'Eksport', + 'import' => 'Import', 'information' => 'Informacja', 'management' => 'Zarządzanie', 'members' => 'Uczestnicy', @@ -442,7 +453,6 @@ 'connections_mode' => 'Domyślny tryb wyświetlania relacji', 'entity_history' => 'Historia edycji elementu', 'entity_image' => 'Ilustracja elementu', - 'family_toolip' => 'Rodzina postaci', 'member_list' => 'Lista uczestników kampanii', 'nested' => 'Domyślny układ list', 'post_collapsed' => 'Domyślny sposób prezentowana komentarzy', diff --git a/lang/pl/campaigns/import.php b/lang/pl/campaigns/import.php new file mode 100644 index 0000000000..9f1bcfab5f --- /dev/null +++ b/lang/pl/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Załaduj wyeksportowane', + ], + 'description' => 'Importuje elementy, wpisy, cechy, galerię i inne elementy wyeksportowanej kampanii do innej kampanii. Proces działa w tle i zajmuje dobrą chwilę, więc przygotuj sobie kawę. Gdy się zakończy, ty i pozostali administratorzy zostaniecie o tum powiadomieni.', + 'fields' => [ + 'file' => 'Eksportuj plik ZIP', + 'updated' => 'Ostatnio zmienione', + ], + 'limitation' => 'Dozwolone są tylko pliki zip do rozmiaru :size.', + 'status' => [ + 'failed' => 'Niepowodzenie', + 'finished' => 'Zakończono', + 'queued' => 'W kolejce', + 'running' => 'W toku', + ], + 'title' => 'Import', +]; diff --git a/lang/pl/campaigns/vanity.php b/lang/pl/campaigns/vanity.php index e1629bc2b9..1d6f086e81 100644 --- a/lang/pl/campaigns/vanity.php +++ b/lang/pl/campaigns/vanity.php @@ -4,5 +4,6 @@ 'available' => 'Nazwa :vanity jest dostępna!', 'helper' => 'Wyróżnij swoją kampanię za pomocą unikatowej nazwy i URL. Na przykład: zamiast zapisu :default każda strona kampanii może mieć adres url :example. To pole można wypełnić tylko raz, na stałe. Więcej informacji o tej funkcji znajdziesz w :learn-more.', 'rule' => 'W polu :field należy umieścić przynajmniej jedną literę alfabetu.', + 'rule2' => 'W polu :field nie można umieścić znaku /.', 'set' => 'Specjalny URL kampanii ustawiono trwale jako :vanity.', ]; diff --git a/lang/pl/entities/abilities.php b/lang/pl/entities/abilities.php index 0b58cf6e92..631f44c545 100644 --- a/lang/pl/entities/abilities.php +++ b/lang/pl/entities/abilities.php @@ -36,6 +36,7 @@ 'title' => 'Zdolności elementu :name', ], 'update' => [ - 'title' => 'Zdolność elementu :name', + 'success' => 'Zmieniono zdolność :ability elementu.', + 'title' => 'Zdolność elementu :name', ], ]; diff --git a/lang/pl/entities/relations.php b/lang/pl/entities/relations.php index da22e3d779..532c0aead3 100644 --- a/lang/pl/entities/relations.php +++ b/lang/pl/entities/relations.php @@ -30,8 +30,9 @@ 'timeline_element' => 'Część historii', ], 'create' => [ - 'new_title' => 'Nowa relacja', - 'title' => 'Nowa relacja elementu :name.', + 'new_title' => 'Nowa relacja', + 'success_bulk' => '{1} Dodano :count relacji do :entity.|[2,4] Dodano :count relacje do :entity.|[5,*] Dodano :count relacji do :entity.', + 'title' => 'Nowa relacja elementu :name.', ], 'delete_mirrored' => [ 'helper' => 'Te elementy łączy relacja obustronna. Wybór tej opcji usunie obydwie strony relacji.', @@ -52,6 +53,10 @@ 'two_way' => 'Stwórz relację obustronną', 'unmirror' => 'Zmień w relację jednostronną', ], + 'filters' => [ + 'connection' => 'Rodzaj relacji', + 'name' => 'Cel relacji', + ], 'helper' => 'Ustalaj relacje między elementami, określając ich rodzaj i widoczność. Relacje można przypinać do opisu elementów.', 'helpers' => [ 'no_relations' => 'Element nie jest obecnie związany z żadnym innym elementem tej kampanii.', diff --git a/lang/pl/maps/markers.php b/lang/pl/maps/markers.php index 465465fe34..b8fe1c35f1 100644 --- a/lang/pl/maps/markers.php +++ b/lang/pl/maps/markers.php @@ -51,6 +51,7 @@ 'stroke-opacity' => 'Przejrzystość konturu', 'stroke-width' => 'Szerokość konturu', ], + 'popupless' => 'Wyświetlanie dymków', 'size' => 'Rozmiar', ], 'helpers' => [ @@ -60,6 +61,7 @@ 'custom_icon_v2' => 'Używaj ikon z :fontawesome, :rpgawesome, albo własnych plików SVG. Więcej instrukcji znajdziesz tutaj: :docs.', 'custom_radius' => 'Wybierz opcję z rozwijanej listy by określić wielkość.', 'draggable' => 'Pozwala przeciągać znacznik po mapie w trybie eksploracji.', + 'is_popupless' => 'Wyłącza wyświetlanie dymków z opisem po najechaniu na element kursorem.', 'label' => 'Wyświetla na mapie test zawierający nazwę tego znacznika albo elementu, z którym jest związany.', 'polygon' => [ 'edit' => 'Modyfikuj wielokąt przeciągając ścianki i kąty.', diff --git a/lang/pl/tags.php b/lang/pl/tags.php index 0bc60c8344..e5ce505791 100644 --- a/lang/pl/tags.php +++ b/lang/pl/tags.php @@ -5,6 +5,10 @@ 'actions' => [ 'add' => 'Dodaj nową etykietę', ], + 'create' => [ + 'attach_success' => '{1} Dodano etykietę :name :count elementowi.|[2,*] Dodano etykietę :name :count elementom.', + 'modal_title' => 'Dodaj elementy do :name', + ], ], 'create' => [ 'title' => 'Nowa etykieta', diff --git a/lang/pt-BR/campaigns.php b/lang/pt-BR/campaigns.php index 5d96d2d5d2..551359e997 100644 --- a/lang/pt-BR/campaigns.php +++ b/lang/pt-BR/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Visibilidade da campanha', 'public_campaign_filters' => 'Filtros de Campanhas Públicas', 'related_visibility' => 'Visibilidade dos Elementos Relacionados', - 'rpg_system' => 'SIstemas de RPG', 'superboosted' => 'Super-impulsionada por', 'system' => 'Sistema', 'theme' => 'Tema', @@ -454,7 +453,6 @@ 'connections_mode' => 'Modo explorador de relações padrão', 'entity_history' => 'Registro de histórico da entidade', 'entity_image' => 'Imagem da entidade', - 'family_toolip' => 'Família do personagem', 'member_list' => 'Lista de membros da campanha', 'nested' => 'Layout padrão de listas', 'post_collapsed' => 'Valor padrão do campo recolhido de um novo post', diff --git a/lang/ru/campaigns.php b/lang/ru/campaigns.php index 161e5c20f0..c6b7b738e3 100644 --- a/lang/ru/campaigns.php +++ b/lang/ru/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Доступность кампании', 'public_campaign_filters' => 'Фильтры для публичной кампании', 'related_visibility' => 'Доступ элементов объектов', - 'rpg_system' => 'Ролевые системы', 'superboosted' => 'Супер-усиливает', 'system' => 'Система', 'theme' => 'Тема', @@ -431,7 +430,6 @@ 'connections_mode' => 'Вид карты связей', 'entity_history' => 'Журналы изменений объектов', 'entity_image' => 'Изображение объекта', - 'family_toolip' => 'Семьи персонажей', 'member_list' => 'Список участников кампании', 'nested' => 'Вид списков', 'post_collapsed' => 'Вид новых постов', diff --git a/lang/sk/abilities.php b/lang/sk/abilities.php index 4690c5e72d..283212f658 100644 --- a/lang/sk/abilities.php +++ b/lang/sk/abilities.php @@ -3,6 +3,13 @@ return [ 'abilities' => [], 'children' => [ + 'actions' => [ + 'attach' => 'Pripojiť k objektom', + ], + 'create' => [ + 'attach_success' => '{1} Schopnosť :name bola pripojená k :count objektu.|[2,*] Schopnosť :name bola priradená ku :count objektom.', + 'modal' => 'Pripojiť :name k objektom', + ], 'description' => 'Objekty s touto schopnosťou', 'title' => 'Objekty schopnosti :name', ], diff --git a/lang/sk/calendars.php b/lang/sk/calendars.php index 0d7627d6a1..41df800301 100644 --- a/lang/sk/calendars.php +++ b/lang/sk/calendars.php @@ -92,6 +92,7 @@ 'recurring_until' => 'Opakujúce sa do roku', 'reset' => 'Týždenný reset', 'seasons' => 'Ročné obdobia', + 'show_birthdays' => 'Zobraziť narodeniny', 'skip_year_zero' => 'Preskočiť Rok Nula', 'start_offset' => 'Posun prvého dňa', 'suffix' => 'Prípona', @@ -118,6 +119,7 @@ 'parent_calendar' => 'Ak kalendáru priradíš nadradený kalendár, priradíš mu aj pripomienky a efekty počasia z tohto nadradeného kalendáru.', 'reset' => 'Začiatok mesiaca alebo roku začína stále na prvom dni týždňa.', 'seasons' => 'Vytvor v tvojom kalendári ročné obdobia tým, že označíš, kedy sa začínajú. O ostatné sa už postará Kanka.', + 'show_birthdays' => 'Zobrazí ročne narodeniny postáv, ktoré majú pripomenutie o narodeninách až po ich dátum smrti.', 'skip_year_zero' => 'Štandardne je prvý rok kalendára nultým rokom. Aktivovaním tohto nastavenia tento preskočíš.', 'weekdays' => 'Nastav názvy tvojich dní v týždni. Podmienkou je pridanie min. 2 dní v týždni.', 'weeks' => 'Definuj názvy pre najdôležitejšie týždne v tvojom kalendári.', diff --git a/lang/sk/campaigns.php b/lang/sk/campaigns.php index 1a6698147f..ef3dcf7c35 100644 --- a/lang/sk/campaigns.php +++ b/lang/sk/campaigns.php @@ -68,7 +68,6 @@ 'public' => 'Viditeľnosť kampane', 'public_campaign_filters' => 'Filter verejných kampaní', 'related_visibility' => 'Viditeľnosť príbuzných prvkov', - 'rpg_system' => 'RPG systémy', 'superboosted' => 'Superboostnutie od', 'system' => 'Systém', 'theme' => 'Téma', @@ -296,6 +295,11 @@ 'delete' => 'Odstrániť', 'edit' => 'Upraviť', 'entity-note' => 'Poznámky', + 'gallery' => [ + 'browse' => 'Prehľadávať', + 'manage' => 'Plná kontrola', + 'upload' => 'Nahrať', + ], 'manage' => 'Spravovať', 'members' => 'Členovia', 'permission' => 'Spravovať oprávnenia', @@ -308,6 +312,11 @@ 'delete' => 'Povolí odstránenia všetkých objektov tohto typu.', 'edit' => 'Povolí úpravy všetkých objektov tohto typu.', 'entity_note' => 'Povolí pridať a upravovať poznámky objektov, aj keď užívateľ nemôže editovať daný objekt.', + 'gallery' => [ + 'browse' => 'Povoliť zobrazenie galérie a nastavení obrázku objektu z galérie.', + 'manage' => 'Povoliť všetko v galérii podobne ako u adminov, vrátane úprav a mazania.', + 'upload' => 'Povoliť nahrávanie obrázkov do galérie. Zobrazovať sa budú iba obrázky, ktorá nahrali, ak nie sú nastavené ďalšie povolenia.', + ], 'manage' => 'Povolí úpravu kampane ako ju má admin kampane, no bez možnosti zmazať kampaň.', 'members' => 'Povolí zasielať pozvánky pre nových členov do kampane.', 'permission' => 'Povolí nastaviť oprávnenia na objektoch typu, ktoré môže upravovať.', @@ -406,8 +415,10 @@ 'applications' => 'Prihlášky', 'campaign' => 'Kampaň', 'customisation' => 'Úprava', + 'data' => 'Údaje', 'default-images' => 'Prednastavené obrázky', 'export' => 'Export', + 'import' => 'Import', 'information' => 'Informácie', 'management' => 'Manažment', 'members' => 'Členovia', @@ -442,7 +453,6 @@ 'connections_mode' => 'Štandardný mód prehliadača vzťahov', 'entity_history' => 'Protokol histórie objektu', 'entity_image' => 'Obrázok objektu', - 'family_toolip' => 'Rod postavy', 'member_list' => 'Zoznam členov kampane', 'nested' => 'Štandardné zobrazenie zoznamov', 'post_collapsed' => 'Štandardná nová hodnota zbalenej poznámky', diff --git a/lang/sk/campaigns/export.php b/lang/sk/campaigns/export.php index d7873a617a..283b8faa48 100644 --- a/lang/sk/campaigns/export.php +++ b/lang/sk/campaigns/export.php @@ -14,6 +14,7 @@ ], 'expired' => 'Link vypršal', 'helpers' => [], + 'progress' => 'Stav', 'size' => 'Veľkosť', 'status' => [ 'failed' => 'Neúspešné', diff --git a/lang/sk/campaigns/import.php b/lang/sk/campaigns/import.php new file mode 100644 index 0000000000..1b1d59b51e --- /dev/null +++ b/lang/sk/campaigns/import.php @@ -0,0 +1,20 @@ + [ + 'import' => 'Nahrať export', + ], + 'description' => 'Importuje objekty, poznámky, atribúty, galériu a ďalšie elementy exportovanej kampane do tejto kampane. Udeje sa to v pozadí a môže to trvať, takže si môžete uvariť zatiaľ čaj či kávu. Všetci admini budú upozornení o ukončení procesu importu.', + 'fields' => [ + 'file' => 'Exportovaný ZIP súbor', + 'updated' => 'Posledná aktulizácia', + ], + 'limitation' => 'Akceptované sú iba ZIP súbory. Max :size.', + 'status' => [ + 'failed' => 'Zlyhaný', + 'finished' => 'Ukončený', + 'queued' => 'V čakačke', + 'running' => 'Prebieha', + ], + 'title' => 'Import', +]; diff --git a/lang/sk/campaigns/vanity.php b/lang/sk/campaigns/vanity.php index 4c13205a64..bbffd9d4f8 100644 --- a/lang/sk/campaigns/vanity.php +++ b/lang/sk/campaigns/vanity.php @@ -4,5 +4,6 @@ 'available' => 'Meno :vanity je dostupné!', 'helper' => 'Označ kampaň jedinečne priamo v URL. Napr. namiesto zobrazenia ako :default, by sa každá stránka kampane zobrazovala ako :example. Toto pole je možné nastaviť iba raz, a to natrvalo. Viac informácií o tejto funkcionalite nájdeš v našej :learn-more.', 'rule' => 'Pole :field vyžaduje aspoň jeden abecedný znak.', + 'rule2' => 'Pole :field neumožňuje nasledujúce znaky: /.', 'set' => 'Skrátené URL kampane je trvalo nastavené na :vanity.', ]; diff --git a/lang/sk/entities/abilities.php b/lang/sk/entities/abilities.php index 21f28cdeb1..ae7156d309 100644 --- a/lang/sk/entities/abilities.php +++ b/lang/sk/entities/abilities.php @@ -36,6 +36,7 @@ 'title' => 'Schopnosti objektu :name', ], 'update' => [ - 'title' => 'Schopnosť objektu :name', + 'success' => 'Objektová schopnosť :ability bola aktualizovaná.', + 'title' => 'Schopnosť objektu :name', ], ]; diff --git a/lang/sk/entities/events.php b/lang/sk/entities/events.php index df59b6598e..9db21ccbad 100644 --- a/lang/sk/entities/events.php +++ b/lang/sk/entities/events.php @@ -17,6 +17,7 @@ ], 'types' => [ 'birth' => 'Narodenie', + 'birthday' => 'Narodeniny', 'death' => 'Smrť', 'founded' => 'Založenie', 'primary' => 'Primárny', diff --git a/lang/sk/entities/notes.php b/lang/sk/entities/notes.php index 3fef4ec477..68b7b2020b 100644 --- a/lang/sk/entities/notes.php +++ b/lang/sk/entities/notes.php @@ -47,6 +47,7 @@ 'move' => [ 'copy' => 'Vytvoriť kópiu v cieľovom objekte', 'copy_success' => 'Komentár :name úspešne skopírovaný do :entity.', + 'copy_title' => 'Ponechať kópiu', 'description' => 'Zvoľ objekt, do ktorého chceš premiestniť alebo kopírovať tento komentár.', 'entity' => 'Cieľový objekt', 'move' => 'Premiestniť alebo kopírovať do iného objektu', diff --git a/lang/sk/entities/relations.php b/lang/sk/entities/relations.php index 273343c31b..f57d8ab27d 100644 --- a/lang/sk/entities/relations.php +++ b/lang/sk/entities/relations.php @@ -30,8 +30,9 @@ 'timeline_element' => 'Prvok časovej osy', ], 'create' => [ - 'new_title' => 'Nový vzťah', - 'title' => 'Vytvoriť vzťah', + 'new_title' => 'Nový vzťah', + 'success_bulk' => '{1} Pridaný :count prepojenie k :entity.|[2,4] Pridané :count prepojenia k :entity.|[5,*] Pridaných :count prepojení k :entity.', + 'title' => 'Vytvoriť vzťah', ], 'delete_mirrored' => [ 'helper' => 'Tento vzťah sa zrkadlí na cieľovom objekte. Zvoľ túto možnosť, aby bol odstránený aj zrkadlený vzťah.', @@ -52,6 +53,10 @@ 'two_way' => 'Vytvoriť zrkadlenie vzťahu', 'unmirror' => 'Zrušiť zrkadlenie tohto vzťahu.', ], + 'filters' => [ + 'connection' => 'Vzťah prepojenia', + 'name' => 'Cieľ prepojenia', + ], 'helper' => 'Vytvor vzťahy medzi objektami s postojom a viditeľnosťou. Vzťahy môžu byť tiež pripnuté k menu objektu.', 'helpers' => [ 'no_relations' => 'Tento objekt nemá aktuálne žiadne vzťahy s inými objektami v kampani.', diff --git a/lang/sk/items.php b/lang/sk/items.php index c9b12d6449..62596dc9fe 100644 --- a/lang/sk/items.php +++ b/lang/sk/items.php @@ -7,9 +7,10 @@ 'destroy' => [], 'edit' => [], 'fields' => [ - 'character' => 'Postava', - 'price' => 'Cena', - 'size' => 'Veľkosť', + 'character' => 'Postava', + 'is_equipped' => 'Vo vybavení', + 'price' => 'Cena', + 'size' => 'Veľkosť', ], 'helpers' => [ 'nested_without' => 'Zobrazujú sa všetky predmety bez nadradeného predmetu. Kliknutím na riadok sa zobrazia podradené predmety.', diff --git a/lang/sk/maps/explore.php b/lang/sk/maps/explore.php index 7d8eac7197..9cbbbb33c9 100644 --- a/lang/sk/maps/explore.php +++ b/lang/sk/maps/explore.php @@ -9,4 +9,5 @@ 'notifications' => [ 'start-drawing' => 'Klikni na mapu, ak chceš začať kresliť mnohouholník', ], + 'toggle' => 'Otvoriť/zatvoriť všetky skupiny', ]; diff --git a/lang/sk/maps/markers.php b/lang/sk/maps/markers.php index b56cbc1ad6..0de9823dcd 100644 --- a/lang/sk/maps/markers.php +++ b/lang/sk/maps/markers.php @@ -51,6 +51,7 @@ 'stroke-opacity' => 'Nepriehľadnosť ťahu', 'stroke-width' => 'Hrúbka ťahu', ], + 'popupless' => 'Bublina náhľadu', 'size' => 'Veľkosť', ], 'helpers' => [ @@ -60,6 +61,7 @@ 'custom_icon_v2' => 'Použi symboly z :fontawesome, :rpgawesome alebo vlastný SVG symbol. Zisti, ako na to v :docs.', 'custom_radius' => 'Vyber si vlastnú veľkosť z možností v menu, ak chceš definovať veľkosť.', 'draggable' => 'Aktivovaním umožníš premiestnenie značky v Prieskumníkovi.', + 'is_popupless' => 'Zruší zobrazenie bubliny s náhľadom pri umiestnení kurzoru myši nad značkou.', 'label' => 'Popis sa zobrazuje ako odsek textu na mape. Jeho obsah bude názov značky daného objektu.', 'polygon' => [ 'edit' => 'Klikni na mapu, ak chceš pridať danú pozíciu medzi koordináty viacuholníka.', diff --git a/lang/sk/notifications.php b/lang/sk/notifications.php index d7eee4f8c5..a6025772db 100644 --- a/lang/sk/notifications.php +++ b/lang/sk/notifications.php @@ -20,6 +20,10 @@ 'export' => 'Export kampane je dostupný. Link je platný po dobu :time minút.', 'export_error' => 'Počas exportu tvojej kampane došlo k chybe. Prosím, kontaktuj nás, ak problém pretrváva.', 'hidden' => 'Kampaň :campaign je teraz skrytá a nezobrazuje sa na stránke verejných kampaní.', + 'import' => [ + 'failed' => 'Import kampane :campaign zlyhal.', + 'success' => 'Import kampane :campaign skončil.', + ], 'join' => ':user pristúpil do kampane :campaign.', 'leave' => ':user opustil kampaň :campaign.', 'plugin' => [ diff --git a/lang/sk/tags.php b/lang/sk/tags.php index 402e650115..4f40a10823 100644 --- a/lang/sk/tags.php +++ b/lang/sk/tags.php @@ -5,6 +5,10 @@ 'actions' => [ 'add' => 'Pridať novú kategóriu', ], + 'create' => [ + 'attach_success' => '{1} :count objekt pridaný do kategórie :name.|[2,4] :count objekty pridané do kategórie :name.|[5,*] :count objektov pridaných do kategórie :name.', + 'modal_title' => 'Pridať objekty k :name.', + ], ], 'create' => [ 'title' => 'Nová kategória', diff --git a/lang/uk/campaigns.php b/lang/uk/campaigns.php index a35f6a06e5..944bb8ab0d 100644 --- a/lang/uk/campaigns.php +++ b/lang/uk/campaigns.php @@ -65,7 +65,6 @@ 'public' => 'Видимість кампанії', 'public_campaign_filters' => 'Публічні фільтри кампанії', 'related_visibility' => 'Видимість пов\'язаних елементів', - 'rpg_system' => 'Системи НРІ', 'superboosted' => 'Суперпідсилена', 'system' => 'Система', 'theme' => 'Тема', @@ -428,7 +427,6 @@ 'connections_mode' => 'Режим дослідника зв\'язків за замовчуванням', 'entity_history' => 'Логи сутності', 'entity_image' => 'Зображення сутності', - 'family_toolip' => 'Родина персонажа', 'member_list' => 'Список учасників кампейну', 'nested' => 'Список шаблонів за замовчанням', 'post_collapsed' => 'Значення нового запису за замовчанням', diff --git a/public/build/assets/abilities-aceb04ef.js b/public/build/assets/abilities-120a3926.js similarity index 99% rename from public/build/assets/abilities-aceb04ef.js rename to public/build/assets/abilities-120a3926.js index 46c4c56746..1c917e0e12 100644 --- a/public/build/assets/abilities-aceb04ef.js +++ b/public/build/assets/abilities-120a3926.js @@ -1 +1 @@ -import{_ as y,o as e,c as i,a as l,h as x,e as g,b as o,t as c,n as v,F as h,r as b,k as C,j as A,g as f,f as k,l as D}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as M}from"./mitt-f7ef348c.js";import{v as L}from"./v-click-outside.umd-d5c5f7b0.js";import"./_commonjsHelpers-725317a4.js";const T={props:["ability","permission","meta","trans"],directives:{clickOutside:L.directive},data(){return{details:!1,openedDropdown:!1}},computed:{hasAttribute:function(){return this.ability.attributes.length>0},canDelete:function(){return this.permission},isSelf:function(){return this.meta.user_id===this.ability.created_by},backgroundImage:function(){return this.ability.images.thumb?{backgroundImage:"url("+this.ability.images.thumb+")"}:{}}},methods:{click:function(t){this.details=!this.details},deleteAbility:function(t){this.emitter.emit("delete_ability",t)},updateAbility:function(t){window.openDialog("abilities-dialog",t.actions.edit)},showAbility:function(t){window.open(t.actions.view,"_blank")},setVisibility:function(t){var a={visibility_id:t,ability_id:this.ability.ability_id};axios.patch(this.ability.actions.update,a).then(s=>{this.ability.visibility_id=t,this.emitter.emit("edited_ability",ability)}).catch(()=>{}),this.openedDropdown=!1},useCharge:function(t,a){a>t.used_charges?t.used_charges+=1:t.used_charges-=1,axios.post(t.actions.use,{used:t.used_charges}).then(s=>{s.data.success||(t.used_charges-=1)}).catch(()=>{t.used_charges-=1})},translate(t){return this.trans[t]??"unknown"},dropdownClass(){return this.openedDropdown?"open dropdown":"dropdown"},openDropdown(){this.openedDropdown=!this.openedDropdown},onClickOutside(t){this.openedDropdown=!1}}},H=["data-tags"],j={class:"ability-box p-3 rounded bg-box shadow-xs"},S={class:"ability-header border-b flex items-center gap-2 pb-2 mb-2"},V=["title"],I=["title"],F=["title"],O=["title"],P=["title"],B={key:1,class:"flex gap-2 flex-wrap"},N={key:1,class:"grow"},z=["data-id","data-url"],E=["title"],J=l("i",{class:"fa-solid fa-pencil","aria-hidden":"true"},null,-1),q={class:"sr-only"},G={class:"ability-body entity-content"},K={class:"flex"},Q={class:"flex-1"},R={class:"help-block"},U=["innerHTML"],W=["innerHTML"],X={key:0,class:"flex-none text-right ml-2 mb-2"},Y=["href"],Z={key:0},$={class:"charges relative"},tt=["onClick"],et={key:0,class:"fa-solid fa-chevron-down"},it={key:2},st={class:"dl-horizontal"},nt=["innerHTML"],at={key:1},lt={key:0},ot={key:0,class:"fa-solid fa-check","aria-hidden":"true"},rt=["innerHTML"],dt={key:0,class:"fa-solid fa-chevron-up"};function ct(t,a,s,m,r,n){const _=C("click-outside");return e(),i("div",{class:"ability","data-tags":s.ability.class},[l("div",j,[l("div",S,[s.permission?x((e(),i("div",{key:0,class:g(n.dropdownClass())},[this.openedDropdown?(e(),i("div",B,[l("a",{role:"button",class:"btn2 btn-sm",onClick:a[1]||(a[1]=d=>n.setVisibility(1))},c(n.translate("all")),1),s.meta.is_admin?(e(),i("a",{key:0,role:"button",class:"btn2 btn-sm",onClick:a[2]||(a[2]=d=>n.setVisibility(2))},c(n.translate("admin")),1)):o("",!0),this.isSelf?(e(),i("a",{key:1,role:"button",class:"btn2 btn-sm",onClick:a[3]||(a[3]=d=>n.setVisibility(4))},c(n.translate("self")),1)):o("",!0),this.isSelf?(e(),i("a",{key:2,role:"button",class:"btn2 btn-sm",onClick:a[4]||(a[4]=d=>n.setVisibility(5))},c(n.translate("members")),1)):o("",!0),this.isSelf?(e(),i("a",{key:3,role:"button",class:"btn2 btn-sm",onClick:a[5]||(a[5]=d=>n.setVisibility(3))},c(n.translate("admin-self")),1)):o("",!0)])):(e(),i("a",{key:0,onClick:a[0]||(a[0]=d=>n.openDropdown()),role:"button"},[s.ability.visibility_id===2?(e(),i("i",{key:0,class:"fa-solid fa-lock",title:n.translate("admin")},null,8,V)):o("",!0),s.ability.visibility_id===3?(e(),i("i",{key:1,class:"fa-solid fa-user-lock",title:n.translate("admin-self")},null,8,I)):o("",!0),s.ability.visibility_id===5?(e(),i("i",{key:2,class:"fa-solid fa-users",title:n.translate("members")},null,8,F)):o("",!0),s.ability.visibility_id===4?(e(),i("i",{key:3,class:"fa-solid fa-user-secret",title:n.translate("self")},null,8,O)):o("",!0),s.ability.visibility_id===1?(e(),i("i",{key:4,class:"fa-solid fa-eye",title:n.translate("all")},null,8,P)):o("",!0)]))],2)),[[_,n.onClickOutside]]):o("",!0),this.openedDropdown?o("",!0):(e(),i("div",N,[l("a",{role:"button",onClick:a[6]||(a[6]=d=>n.showAbility(s.ability)),"data-toggle":"tooltip-ajax",class:"grow text-lg","data-id":s.ability.entity.id,"data-url":s.ability.entity.tooltip},c(s.ability.name),9,z)])),this.canDelete&&!this.openedDropdown?(e(),i("a",{key:2,role:"button",onClick:a[7]||(a[7]=d=>n.updateAbility(s.ability)),class:"btn2 btn-ghost btn-xs",title:n.translate("update")},[J,l("span",q,c(n.translate("update")),1)],8,E)):o("",!0)]),l("div",G,[l("div",K,[l("div",Q,[l("span",R,c(s.ability.type),1),l("div",{innerHTML:s.ability.entry},null,8,U),l("div",{innerHTML:s.ability.note,class:"help-block"},null,8,W)]),s.ability.images.has?(e(),i("div",X,[l("a",{class:"ability-image block w-32 h-32 cover-background",target:"_blank",href:s.ability.images.url,style:v(n.backgroundImage)},null,12,Y)])):o("",!0)]),s.ability.charges&&s.permission?(e(),i("div",Z,[l("div",$,[(e(!0),i(h,null,b(s.ability.charges,d=>(e(),i("div",{class:g(["charge inline-block mr-2 h-5 w-5 cursor-pointer bg-white shadow-xs",{used:s.ability.used_charges>=d}]),onClick:w=>n.useCharge(s.ability,d)},null,10,tt))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:1,class:"text-center cursor-pointer",onClick:a[8]||(a[8]=d=>n.click(s.ability))},[r.details?o("",!0):(e(),i("i",et))])):o("",!0),r.details&&n.hasAttribute?(e(),i("div",it,[l("dl",st,[(e(!0),i(h,null,b(s.ability.attributes,d=>(e(),i("div",null,[d.type=="section"?(e(),i("h4",{key:0,class:"font-bold text-center",innerHTML:d.name},null,8,nt)):(e(),i("div",at,[l("dt",null,c(d.name),1),d.type=="checkbox"?(e(),i("dd",lt,[d.value==1?(e(),i("i",ot)):o("",!0)])):(e(),i("dd",{key:1,innerHTML:d.value},null,8,rt))]))]))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:3,class:"text-center cursor-pointer",onClick:a[9]||(a[9]=d=>n.click(s.ability))},[r.details?(e(),i("i",dt)):o("",!0)])):o("",!0)])])],8,H)}const ut=y(T,[["render",ct]]),ht={props:["ability"],data(){return{active:!1}},computed:{backgroundImage:function(){return this.ability.has_image?{backgroundImage:"url("+this.ability.image+")"}:{}}},methods:{click:function(t){this.emitter.emit("click_parent",this.active?null:t)}},mounted(){this.emitter.on("click_parent",t=>{this.active=t&&t.id===this.ability.id})}},bt={class:"ability-name flex justify-center h-full w-full items-center cursor-pointer bg-white/70 hover:bg-black/10 transition-all duration-500"},_t={class:"name text-2xl"};function yt(t,a,s,m,r,n){return e(),i("div",{class:g(["ability-parent cover-background rounded overflow-hidden w-48 h-20",{active:r.active,without:!s.ability.has_image}]),style:v(n.backgroundImage),onClick:a[0]||(a[0]=_=>n.click(s.ability))},[l("div",bt,[l("div",_t,c(s.ability.name),1)])],6)}const mt=y(ht,[["render",yt]]),ft={props:[],data(){return{modal:!1,modalContent:""}},methods:{showModal:function(t){this.modal=!0,axios.get(t).then(a=>{this.modalContent=a.data})},modalStyle:function(){return this.modal?"block":"hidden"}},mounted(){this.emitter.on("add_ability",t=>{this.showModal(t)})}},kt={class:"modal-dialog",role:"document"},gt=["innerHTML"];function vt(t,a,s,m,r,n){return e(),i("div",{class:"modal fade in",style:v({display:this.modalStyle()}),tabindex:"-1",role:"dialog"},[l("div",kt,[l("div",{class:"modal-content",innerHTML:r.modalContent},null,8,gt)])],4)}const pt=y(ft,[["render",vt]]),wt={props:["id","api","permission","trans"],components:{Ability:ut,AbilityForm:pt,Parent:mt},data(){return{abilities:[],parents:[],meta:[],loading:!0,show_parent:!1,parent:null,waiting:!1,modal:!1,json_trans:[]}},methods:{getAbilities:function(){fetch(this.api).then(t=>t.json()).then(t=>{this.abilities=t.data.abilities,this.parents=t.data.parents,this.meta=t.data.meta,this.loading=!1,this.waiting=!1,this.parent&&(this.parent=this.parents[this.parent.id],this.showParent(this.parent))})},showParent:function(t){this.show_parent=!!t},addAbility:function(){this.emitter.emit("add_ability",this.meta.add_url)},deleteAbility:function(t){this.waiting=!0,axios.delete(t.actions.delete).then(()=>{this.getAbilities()}).catch(()=>{this.getAbilities()})},translate(t){return this.json_trans[t]??"unknown"}},mounted(){this.getAbilities(),this.emitter.on("click_parent",t=>{this.parent=t,this.showParent(t)}),this.emitter.on("delete_ability",t=>{this.deleteAbility(t)}),this.json_trans=JSON.parse(this.trans)},updated(){window.ajaxTooltip()}},xt={class:"viewport box-abilities relative flex flex-col gap-5"},Ct={key:0,class:"load more text-center"},At=l("i",{class:"fa-solid fa-spin fa-spinner"},null,-1),Dt=[At],Mt={class:"flex gap-5 flex-wrap"},Lt={key:1,class:"flex flex-col gap-5"},Tt={key:0,class:"parent-box p-3 rounded bg-box shadow-xs"},Ht={class:"parent-header mb-2"},jt=["href"],St=["innerHTML"],Vt={class:"flex flex-col gap-5"},It={key:2,class:"box-waiting absolute top-0 w-full h-full bg-black/20 text-center"},Ft=l("i",{class:"fa-solid fa-spin fa-spinner fa-4x mt-5"},null,-1),Ot=[Ft];function Pt(t,a,s,m,r,n){const _=f("parent"),d=f("ability"),w=f("AbilityForm");return e(),i("div",xt,[r.loading?(e(),i("div",Ct,Dt)):o("",!0),l("div",Mt,[(e(!0),i(h,null,b(r.parents,u=>(e(),k(_,{key:u.id,ability:u},null,8,["ability"]))),128))]),r.show_parent?(e(),i("div",Lt,[r.parent.entry?(e(),i("div",Tt,[l("div",Ht,[l("a",{class:"text-lg",href:r.parent.url},c(r.parent.name),9,jt)]),l("div",{class:"entity-content parent-body",innerHTML:r.parent.entry},null,8,St)])):o("",!0),(e(!0),i(h,null,b(r.parent.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))])):o("",!0),l("div",Vt,[r.show_parent?o("",!0):(e(!0),i(h,{key:0},b(r.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))]),A(w,{trans:r.json_trans},null,8,["trans"]),r.waiting?(e(),i("div",It,Ot)):o("",!0)])}const Bt=y(wt,[["render",Pt]]),Nt=M(),p=D({});p.config.globalProperties.emitter=Nt;p.component("abilities",Bt);p.mount("#abilities"); +import{_ as y,o as e,c as i,a as l,h as x,e as g,b as o,t as c,n as v,F as h,r as b,k as C,j as A,g as f,f as k,l as D}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as M}from"./mitt-f7ef348c.js";import{v as L}from"./v-click-outside.umd-1708c20a.js";import"./_commonjsHelpers-725317a4.js";const T={props:["ability","permission","meta","trans"],directives:{clickOutside:L.directive},data(){return{details:!1,openedDropdown:!1}},computed:{hasAttribute:function(){return this.ability.attributes.length>0},canDelete:function(){return this.permission},isSelf:function(){return this.meta.user_id===this.ability.created_by},backgroundImage:function(){return this.ability.images.thumb?{backgroundImage:"url("+this.ability.images.thumb+")"}:{}}},methods:{click:function(t){this.details=!this.details},deleteAbility:function(t){this.emitter.emit("delete_ability",t)},updateAbility:function(t){window.openDialog("abilities-dialog",t.actions.edit)},showAbility:function(t){window.open(t.actions.view,"_blank")},setVisibility:function(t){var a={visibility_id:t,ability_id:this.ability.ability_id};axios.patch(this.ability.actions.update,a).then(s=>{this.ability.visibility_id=t,this.emitter.emit("edited_ability",ability)}).catch(()=>{}),this.openedDropdown=!1},useCharge:function(t,a){a>t.used_charges?t.used_charges+=1:t.used_charges-=1,axios.post(t.actions.use,{used:t.used_charges}).then(s=>{s.data.success||(t.used_charges-=1)}).catch(()=>{t.used_charges-=1})},translate(t){return this.trans[t]??"unknown"},dropdownClass(){return this.openedDropdown?"open dropdown":"dropdown"},openDropdown(){this.openedDropdown=!this.openedDropdown},onClickOutside(t){this.openedDropdown=!1}}},H=["data-tags"],j={class:"ability-box p-3 rounded bg-box shadow-xs"},S={class:"ability-header border-b flex items-center gap-2 pb-2 mb-2"},V=["title"],I=["title"],F=["title"],O=["title"],P=["title"],B={key:1,class:"flex gap-2 flex-wrap"},N={key:1,class:"grow"},z=["data-id","data-url"],E=["title"],J=l("i",{class:"fa-solid fa-pencil","aria-hidden":"true"},null,-1),q={class:"sr-only"},G={class:"ability-body entity-content"},K={class:"flex"},Q={class:"flex-1"},R={class:"help-block"},U=["innerHTML"],W=["innerHTML"],X={key:0,class:"flex-none text-right ml-2 mb-2"},Y=["href"],Z={key:0},$={class:"charges relative"},tt=["onClick"],et={key:0,class:"fa-solid fa-chevron-down"},it={key:2},st={class:"dl-horizontal"},nt=["innerHTML"],at={key:1},lt={key:0},ot={key:0,class:"fa-solid fa-check","aria-hidden":"true"},rt=["innerHTML"],dt={key:0,class:"fa-solid fa-chevron-up"};function ct(t,a,s,m,r,n){const _=C("click-outside");return e(),i("div",{class:"ability","data-tags":s.ability.class},[l("div",j,[l("div",S,[s.permission?x((e(),i("div",{key:0,class:g(n.dropdownClass())},[this.openedDropdown?(e(),i("div",B,[l("a",{role:"button",class:"btn2 btn-sm",onClick:a[1]||(a[1]=d=>n.setVisibility(1))},c(n.translate("all")),1),s.meta.is_admin?(e(),i("a",{key:0,role:"button",class:"btn2 btn-sm",onClick:a[2]||(a[2]=d=>n.setVisibility(2))},c(n.translate("admin")),1)):o("",!0),this.isSelf?(e(),i("a",{key:1,role:"button",class:"btn2 btn-sm",onClick:a[3]||(a[3]=d=>n.setVisibility(4))},c(n.translate("self")),1)):o("",!0),this.isSelf?(e(),i("a",{key:2,role:"button",class:"btn2 btn-sm",onClick:a[4]||(a[4]=d=>n.setVisibility(5))},c(n.translate("members")),1)):o("",!0),this.isSelf?(e(),i("a",{key:3,role:"button",class:"btn2 btn-sm",onClick:a[5]||(a[5]=d=>n.setVisibility(3))},c(n.translate("admin-self")),1)):o("",!0)])):(e(),i("a",{key:0,onClick:a[0]||(a[0]=d=>n.openDropdown()),role:"button"},[s.ability.visibility_id===2?(e(),i("i",{key:0,class:"fa-solid fa-lock",title:n.translate("admin")},null,8,V)):o("",!0),s.ability.visibility_id===3?(e(),i("i",{key:1,class:"fa-solid fa-user-lock",title:n.translate("admin-self")},null,8,I)):o("",!0),s.ability.visibility_id===5?(e(),i("i",{key:2,class:"fa-solid fa-users",title:n.translate("members")},null,8,F)):o("",!0),s.ability.visibility_id===4?(e(),i("i",{key:3,class:"fa-solid fa-user-secret",title:n.translate("self")},null,8,O)):o("",!0),s.ability.visibility_id===1?(e(),i("i",{key:4,class:"fa-solid fa-eye",title:n.translate("all")},null,8,P)):o("",!0)]))],2)),[[_,n.onClickOutside]]):o("",!0),this.openedDropdown?o("",!0):(e(),i("div",N,[l("a",{role:"button",onClick:a[6]||(a[6]=d=>n.showAbility(s.ability)),"data-toggle":"tooltip-ajax",class:"grow text-lg","data-id":s.ability.entity.id,"data-url":s.ability.entity.tooltip},c(s.ability.name),9,z)])),this.canDelete&&!this.openedDropdown?(e(),i("a",{key:2,role:"button",onClick:a[7]||(a[7]=d=>n.updateAbility(s.ability)),class:"btn2 btn-ghost btn-xs",title:n.translate("update")},[J,l("span",q,c(n.translate("update")),1)],8,E)):o("",!0)]),l("div",G,[l("div",K,[l("div",Q,[l("span",R,c(s.ability.type),1),l("div",{innerHTML:s.ability.entry},null,8,U),l("div",{innerHTML:s.ability.note,class:"help-block"},null,8,W)]),s.ability.images.has?(e(),i("div",X,[l("a",{class:"ability-image block w-32 h-32 cover-background",target:"_blank",href:s.ability.images.url,style:v(n.backgroundImage)},null,12,Y)])):o("",!0)]),s.ability.charges&&s.permission?(e(),i("div",Z,[l("div",$,[(e(!0),i(h,null,b(s.ability.charges,d=>(e(),i("div",{class:g(["charge inline-block mr-2 h-5 w-5 cursor-pointer bg-white shadow-xs",{used:s.ability.used_charges>=d}]),onClick:w=>n.useCharge(s.ability,d)},null,10,tt))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:1,class:"text-center cursor-pointer",onClick:a[8]||(a[8]=d=>n.click(s.ability))},[r.details?o("",!0):(e(),i("i",et))])):o("",!0),r.details&&n.hasAttribute?(e(),i("div",it,[l("dl",st,[(e(!0),i(h,null,b(s.ability.attributes,d=>(e(),i("div",null,[d.type=="section"?(e(),i("h4",{key:0,class:"font-bold text-center",innerHTML:d.name},null,8,nt)):(e(),i("div",at,[l("dt",null,c(d.name),1),d.type=="checkbox"?(e(),i("dd",lt,[d.value==1?(e(),i("i",ot)):o("",!0)])):(e(),i("dd",{key:1,innerHTML:d.value},null,8,rt))]))]))),256))])])):o("",!0),n.hasAttribute?(e(),i("div",{key:3,class:"text-center cursor-pointer",onClick:a[9]||(a[9]=d=>n.click(s.ability))},[r.details?(e(),i("i",dt)):o("",!0)])):o("",!0)])])],8,H)}const ut=y(T,[["render",ct]]),ht={props:["ability"],data(){return{active:!1}},computed:{backgroundImage:function(){return this.ability.has_image?{backgroundImage:"url("+this.ability.image+")"}:{}}},methods:{click:function(t){this.emitter.emit("click_parent",this.active?null:t)}},mounted(){this.emitter.on("click_parent",t=>{this.active=t&&t.id===this.ability.id})}},bt={class:"ability-name flex justify-center h-full w-full items-center cursor-pointer bg-white/70 hover:bg-black/10 transition-all duration-500"},_t={class:"name text-2xl"};function yt(t,a,s,m,r,n){return e(),i("div",{class:g(["ability-parent cover-background rounded overflow-hidden w-48 h-20",{active:r.active,without:!s.ability.has_image}]),style:v(n.backgroundImage),onClick:a[0]||(a[0]=_=>n.click(s.ability))},[l("div",bt,[l("div",_t,c(s.ability.name),1)])],6)}const mt=y(ht,[["render",yt]]),ft={props:[],data(){return{modal:!1,modalContent:""}},methods:{showModal:function(t){this.modal=!0,axios.get(t).then(a=>{this.modalContent=a.data})},modalStyle:function(){return this.modal?"block":"hidden"}},mounted(){this.emitter.on("add_ability",t=>{this.showModal(t)})}},kt={class:"modal-dialog",role:"document"},gt=["innerHTML"];function vt(t,a,s,m,r,n){return e(),i("div",{class:"modal fade in",style:v({display:this.modalStyle()}),tabindex:"-1",role:"dialog"},[l("div",kt,[l("div",{class:"modal-content",innerHTML:r.modalContent},null,8,gt)])],4)}const pt=y(ft,[["render",vt]]),wt={props:["id","api","permission","trans"],components:{Ability:ut,AbilityForm:pt,Parent:mt},data(){return{abilities:[],parents:[],meta:[],loading:!0,show_parent:!1,parent:null,waiting:!1,modal:!1,json_trans:[]}},methods:{getAbilities:function(){fetch(this.api).then(t=>t.json()).then(t=>{this.abilities=t.data.abilities,this.parents=t.data.parents,this.meta=t.data.meta,this.loading=!1,this.waiting=!1,this.parent&&(this.parent=this.parents[this.parent.id],this.showParent(this.parent))})},showParent:function(t){this.show_parent=!!t},addAbility:function(){this.emitter.emit("add_ability",this.meta.add_url)},deleteAbility:function(t){this.waiting=!0,axios.delete(t.actions.delete).then(()=>{this.getAbilities()}).catch(()=>{this.getAbilities()})},translate(t){return this.json_trans[t]??"unknown"}},mounted(){this.getAbilities(),this.emitter.on("click_parent",t=>{this.parent=t,this.showParent(t)}),this.emitter.on("delete_ability",t=>{this.deleteAbility(t)}),this.json_trans=JSON.parse(this.trans)},updated(){window.ajaxTooltip()}},xt={class:"viewport box-abilities relative flex flex-col gap-5"},Ct={key:0,class:"load more text-center"},At=l("i",{class:"fa-solid fa-spin fa-spinner"},null,-1),Dt=[At],Mt={class:"flex gap-5 flex-wrap"},Lt={key:1,class:"flex flex-col gap-5"},Tt={key:0,class:"parent-box p-3 rounded bg-box shadow-xs"},Ht={class:"parent-header mb-2"},jt=["href"],St=["innerHTML"],Vt={class:"flex flex-col gap-5"},It={key:2,class:"box-waiting absolute top-0 w-full h-full bg-black/20 text-center"},Ft=l("i",{class:"fa-solid fa-spin fa-spinner fa-4x mt-5"},null,-1),Ot=[Ft];function Pt(t,a,s,m,r,n){const _=f("parent"),d=f("ability"),w=f("AbilityForm");return e(),i("div",xt,[r.loading?(e(),i("div",Ct,Dt)):o("",!0),l("div",Mt,[(e(!0),i(h,null,b(r.parents,u=>(e(),k(_,{key:u.id,ability:u},null,8,["ability"]))),128))]),r.show_parent?(e(),i("div",Lt,[r.parent.entry?(e(),i("div",Tt,[l("div",Ht,[l("a",{class:"text-lg",href:r.parent.url},c(r.parent.name),9,jt)]),l("div",{class:"entity-content parent-body",innerHTML:r.parent.entry},null,8,St)])):o("",!0),(e(!0),i(h,null,b(r.parent.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))])):o("",!0),l("div",Vt,[r.show_parent?o("",!0):(e(!0),i(h,{key:0},b(r.abilities,u=>(e(),k(d,{key:u.id,ability:u,permission:s.permission,meta:r.meta,trans:r.json_trans},null,8,["ability","permission","meta","trans"]))),128))]),A(w,{trans:r.json_trans},null,8,["trans"]),r.waiting?(e(),i("div",It,Ot)):o("",!0)])}const Bt=y(wt,[["render",Pt]]),Nt=M(),p=D({});p.config.globalProperties.emitter=Nt;p.component("abilities",Bt);p.mount("#abilities"); diff --git a/public/build/assets/app-0e88c1bd.js b/public/build/assets/app-0e88c1bd.js new file mode 100644 index 0000000000..c5ccea7002 --- /dev/null +++ b/public/build/assets/app-0e88c1bd.js @@ -0,0 +1 @@ +import{t as U,C as W}from"./tippy.esm-24ef6cb2.js";import{d as tt}from"./mention-2d258b1d.js";import{S as De}from"./sortable.esm-0d19b1d3.js";import"./dialog-66bef5f6.js";import{_ as S,c as l,a,t as f,o as r,n as E,w as X,b as h,F as v,r as w,d as b,e as g,f as T,g as L,h as ee,i as nt,v as it,j as z,k as qe,l as st}from"./_plugin-vue_export-helper-c420bb3b.js";import{m as at}from"./mitt-f7ef348c.js";import{v as Ee}from"./v-click-outside.umd-1708c20a.js";import"./_commonjsHelpers-725317a4.js";$(document).ready(function(){window.initTags=function(){$.each($(".form-tags"),function(){$(this).hasClass("select2-hidden-accessible")||$(this).select2({tags:$(this).data("allow-new"),allowClear:$(this).data("allow-clear"),dropdownParent:$(this).data("dropdown-parent")||"",minimumInputLength:0,ajax:{quietMillis:500,delay:500,url:$(this).data("url"),dataType:"json",data:function(e){return{q:$.trim(e.term)}},processResults:function(e){return{results:e}},cache:!0},createTag:function(e){var t=$.trim(e.term);return t===""?null:{id:t,text:t,newTag:!0}},templateResult:function(e){var t=$(""+e.text+"");return e.colour&&(t=$(""+e.text+"")),t},templateSelection:function(e,t){if(e.newTag)return $(''+e.text+' ');let n=$(e.element);return e.colour?$(t).addClass(e.colour):n.data("colour")&&$(t).addClass(n.data("colour")),$(t).addClass("text-left"),e.text}})})},window.initTags()});/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Si us plau, elimina "+n+" car";return s+=n==1?"àcter":"àcters"},inputTooShort:function(t){var n=t.minimum-t.input.length,s="Si us plau, introdueix "+n+" car";return s+=n==1?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(t){var n="Només es pot seleccionar "+t.maximum+" element";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(t){return"Bitte "+(t.input.length-t.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(t){return"Bitte "+(t.minimum-t.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(t){var n="Sie können nur "+t.maximum+" Element";return t.maximum!=1&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Please delete "+n+" character";return n!=1&&(s+="s"),s},inputTooShort:function(t){return"Please enter "+(t.minimum-t.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){var n="You can only select "+t.maximum+" item";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Por favor, elimine "+n+" car";return s+=n==1?"ácter":"acteres"},inputTooShort:function(t){var n=t.minimum-t.input.length,s="Por favor, introduzca "+n+" car";return s+=n==1?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(t){var n="Sólo puede seleccionar "+t.maximum+" elemento";return t.maximum!=1&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(t){return"Vous pouvez seulement sélectionner "+t.maximum+" élément"+(t.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(t){return"Túl hosszú. "+(t.input.length-t.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(t){return"Túl rövid. Még "+(t.minimum-t.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(t){return"Csak "+t.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Per favore cancella "+n+" caratter";return s+=n!==1?"i":"e"},inputTooShort:function(t){return"Per favore inserisci "+(t.minimum-t.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(t){var n="Puoi selezionare solo "+t.maximum+" element";return t.maximum!==1?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(t){return"Gelieve "+(t.input.length-t.maximum)+" karakters te verwijderen"},inputTooShort:function(t){return"Gelieve "+(t.minimum-t.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(t){var n=t.maximum==1?"kan":"kunnen",s="Er "+n+" maar "+t.maximum+" item";return t.maximum!=1&&(s+="s"),s+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pl",[],function(){var t=["znak","znaki","znaków"],n=["element","elementy","elementów"],s=function(i,o){return i===1?o[0]:i>1&&i<=4?o[1]:i>=5?o[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(i){var o=i.input.length-i.maximum;return"Usuń "+o+" "+s(o,t)},inputTooShort:function(i){var o=i.minimum-i.input.length;return"Podaj przynajmniej "+o+" "+s(o,t)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(i){return"Możesz zaznaczyć tylko "+i.maximum+" "+s(i.maximum,n)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(t){var n=t.input.length-t.maximum,s="Apague "+n+" caracter";return n!=1&&(s+="es"),s},inputTooShort:function(t){return"Digite "+(t.minimum-t.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(t){var n="Você só pode selecionar "+t.maximum+" ite";return t.maximum==1?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ru",[],function(){function t(n,s,i,o){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?i:s:o}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(n){var s=n.input.length-n.maximum,i="Пожалуйста, введите на "+s+" символ";return i+=t(s,"","a","ов"),i+=" меньше"},inputTooShort:function(n){var s=n.minimum-n.input.length,i="Пожалуйста, введите ещё хотя бы "+s+" символ";return i+=t(s,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(n){var s="Вы можете выбрать не более "+n.maximum+" элемент";return s+=t(n.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),e.define,e.require})();/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sk",[],function(){var t={2:function(n){return n?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{errorLoading:function(){return"Výsledky sa nepodarilo načítať."},inputTooLong:function(n){var s=n.input.length-n.maximum;return s==1?"Prosím, zadajte o jeden znak menej":s>=2&&s<=4?"Prosím, zadajte o "+t[s](!0)+" znaky menej":"Prosím, zadajte o "+s+" znakov menej"},inputTooShort:function(n){var s=n.minimum-n.input.length;return s==1?"Prosím, zadajte ešte jeden znak":s<=4?"Prosím, zadajte ešte ďalšie "+t[s](!0)+" znaky":"Prosím, zadajte ešte ďalších "+s+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return n.maximum==1?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+t[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require})();$(document).ready(function(){window.initForeignSelect=function(){$("select.select2").length!==0&&($.each($("select.select2"),function(e){if($(this).hasClass("select2-hidden-accessible"))return;if($(this).hasClass("campaign-genres")){$(this).select2({tags:!1,allowClear:!0,dropdownParent:"",width:"100%",maximumSelectionLength:3});return}let t=$(this).data("allow-clear"),n=$(this).data("dropdown-parent");$(this).select2({tags:!1,placeholder:$(this).data("placeholder"),allowClear:t||!0,language:$(this).data("language"),minimumInputLength:0,dropdownParent:n||"",width:"100%",ajax:{delay:500,quietMillis:500,url:$(this).data("url"),dataType:"json",data:function(s){return{q:$.trim(s.term)}},processResults:function(s){return{results:s}},error:function(s){return console.log("error",s),s.status===503&&window.showToast(s.responseJSON.message,"error"),{results:[]}},cache:!0},templateResult:function(s){var i="";return s.image?i=$(""+s.text+""):i=$(""+s.text+""),i},createTag:function(s){return null}})}),$("select.select2-local").select2({placeholder:$(this).data("placeholder"),language:$(this).data("language"),allowClear:!0}),$("select.select2-colour").select2({allowClear:!1,templateResult:pe,templateSelection:pe}))}});function pe(e){return e.id==="none"?e.text:$('
'+e.text+"
")}$(document).ready(function(){$.each($("form"),function(){$(this).data("shortcut")&&rt(this)}),ot(),ge(),$(document).on("shown.bs.modal",()=>{ge()})});function ot(){$(document).bind("keydown",function(e){let t=$(e.target),n=$("#entity-modal"),s=$(".quick-creator-button"),i=$('[data-keyboard="edit"]');if(e.key==="]"){if(H(t))return;$(".sidebar-toggle").click().blur()}else{if(e.key==="k")return H(t)?void 0:($("#entity-lookup").focus(),!1);if(e.key==="n"&&!(e.ctrlKey||e.metaKey)&&!e.altKey&&s.length>0){if(H(t)||(n.data("bs.modal")||{}).isShown)return;s[0].click()}else if(e.key==="e"&&!(e.ctrlKey||e.metaKey)&&i.length===1){if(H(t)||(n.data("bs.modal")||{}).isShown)return;i[0].click()}else e.key==="Escape"&&n.has(".qq-modal-selection").length===1&&n.modal("hide")}})}function H(e){return e.length===0?!1:e.is("input")||e.is("select")||e.is("textarea")||e.attr("contentEditable")==="true"||e.hasClass("CodeMirror")}function rt(e){$(document).bind("keydown",function(t){if((t.ctrlKey||t.metaKey)&&t.key.toLowerCase()==="s")return window.entityFormHasUnsavedChanges=!1,t.shiftKey?J("submit-update"):t.altKey&&J("submit-new"),$(e).submit(),!1;if((t.ctrlKey||t.metaKey)&&t.altKey&&t.key==="c")return window.entityFormHasUnsavedChanges=!1,J("submit-copy"),$(e).submit(),!1})}function J(e){let t=$("#form-submit-main");t&&(t.attr("name",e),$("#submit-mode").attr("name",e))}const ge=()=>{$('input[data-paste="fontawesome"]').on("paste",function(e){e.preventDefault();let t;if(e.clipboardData||e.originalEvent.clipboardData?t=(e.originalEvent||e).clipboardData.getData("text/plain"):window.clipboardData&&(t=window.clipboardData.getData("Text")),t.startsWith('i.json()).then(i=>{s.innerHTML="",i.forEach(o=>{let c=document.createElement("a");c.href=o.url,c.text=o.name,s.append(c)}),i.length>0&&t.show()})})}function Me(){if(P=$(".form-submit-actions"),P.length===0)return;let e=$("#form-submit-main"),t=$("#submit-mode");if(t===void 0)throw new Error("No submit mode hidden input found");$.each(P,function(){$(this).data("loaded")!==1&&($(this).data("loaded",1),$(this).unbind("click").on("click",function(){return t.attr("name",$(this).data("action")),e.trigger("click"),!1}))})}function dt(){$.each($("form"),function(){$(this).on("submit",function(){window.entityFormHasUnsavedChanges=!1;var e=$(this).find(".btn-primary");return e.length>0&&($.each(e,function(){$(this).parent().hasClass("dropdown")||$(this).hasClass("quick-creator-subform")?$(this).prop("disabled",!0):$(this).prop("disabled",!0).addClass("loading")}),$(this).append('')),!0})})}function ut(){q=$("#entity-calendar-form-add"),y=$('select[name="calendar_id"]'),G=$('input[name="calendar_id"]'),$(".entity-calendar-modal-form"),j=$(".entity-calendar-subform"),A=$("#entity-calendar-form-cancel"),te=$(".entity-calendar-form"),k=$('input[name="calendar_year"]'),C=$('select[name="calendar_month"]'),x=$('select[name="calendar_day"]'),N=$(".entity-calendar-loading"),q.length===1&&(q.on("click",function(e){e.preventDefault(),q.hide(),te.show();let t=$(this).data("default-calendar");return t&&(G.val(t),A.show(),j.show(),B(t)),!1}),A.on("click",function(e){e.preventDefault(),y.val(null),G.val(null),A.hide(),ne()})),y.length===1&&y.on("change",function(){if(j.hide(),!$(this).val())return ne(),!1;k=$('input[name="calendar_year"]'),C=$('select[name="calendar_month"]'),x=$('select[name="calendar_day"]'),k.length===0&&$('input[name="year"]').length===1&&(k=$('input[name="year"]'),C=$('select[name="month"]'),x=$('input[name="day"]')),B(y.val())}),_t()}function Ae(){$("#entity-calendar-modal-add").length!==0&&(q=$("input[name=calendar-data-url]"),y=$('select[name="calendar_id"]'),k=$('input[name="year"]'),C=$('select[name="month"]'),x=$('input[name="day"]'),N=$(".entity-calendar-loading"),j=$(".entity-calendar-subform"),y.on("change",function(){if(j.hide(),!y.val()){ne();return}B(y.val())}),y.val()&&(A.show(),j.show(),B(y.val())),$('.entity-calendar-subform input[name="length"]').focusout(function(){if(!$(this).val())return;let e=$(this).data("url").replace("/0/","/"+y.val()+"/"),t={day:x.val(),month:C.val(),year:k.val(),length:$(this).val()};$.ajax(e,{data:t}).done(function(n){n.overflow==!0?$(".length-warning").show():$(".length-warning").hide()})}))}const B=e=>{N.show(),e=parseInt(e);var t=$('input[name="calendar-data-url"]').data("url").replace("/0/","/"+e+"/");fetch(t).then(n=>n.json()).then(n=>{let s=x.val();k.html(""),C.html(""),x.html("");let i=1,o=1;s||(s=n.current.day);let c=parseInt(n.current.month);$.each(n.months,function(d){let m=n.months[d],u=i===c?' selected="selected"':"";C.append('"),i===c&&(o=m.length),i++});for(let d=1;d"+d+"")}N.hide(),j.show(),k.val(n.current.year),$("select.reminder-periodicity option").remove(),$.each(n.recurring,function(d,m){$("select.reminder-periodicity").append('")}),$('input[name="length"]').val(1),n.length===1&&C.val(n[0].id)})};function ne(){te.hide(),q.show(),$('input[name="calendar_day"]').val(null),$('input[name="calendar_month"]').val(null),$('input[name="calendar_year"]').val(null),$('select[name="calendar_id"]').val(null)}function ft(){if(P=$('form[data-unload="1"]'),P.length===0)return;let e=$("#form-submit-main");$(document).on("change",":input",function(){$(this).data("skip-unsaved")||(window.entityFormHasUnsavedChanges=!0)}),e.length===1&&$(window).bind("beforeunload",function(t){if(window.entityFormHasUnsavedChanges)return"Unsaved data warning"})}function Ie(){$('form[data-maintenance="1"]').each(function(){$(this).data("with-maintenance")!==!0&&($(this).data("with-maintenance",!0),$(this).submit(function(e){if($(this).data("checked-maintenance")===!0)return!0;e.preventDefault();let t={url:$(this).attr("action"),method:$(this).attr("method"),data:$(this).serialize(),context:this};if($(this).find('input[type="file"]').not(".note-image-input").length>0){let n=new FormData(this);t={url:$(this).attr("action"),method:$(this).attr("method"),data:n,cache:!1,contentType:!1,processData:!1,context:this}}$.ajax(t).done(function(){$(this).data("checked-maintenance",!0).submit()}).fail(function(n){window.formErrorHandler(n,this)})}))})}function ht(){$(".permission-toggle").change(function(){let t="input[data-action="+$(this).data("action")+"]";$(this).prop("checked")?$(t).prop("checked",!0):$(t).prop("checked",!1)})}function Pe(){$(".btn-post-collapse").unbind("click").click(function(){return document.querySelectorAll(".element-toggle").forEach(t=>{t.classList.add("animate-collapsed"),document.querySelector(t.dataset.target).classList.add("hidden")}),!1}),$(".btn-post-expand").unbind("click").click(function(){return document.querySelectorAll(".element-toggle").forEach(t=>{t.classList.remove("animate-collapsed"),document.querySelector(t.dataset.target).classList.remove("hidden")}),!1})}function Qe(){$(".story-load-more").click(function(e){e.preventDefault();let t=$(this);return $(this).addClass("loading"),mt($(this).data("url")).then(n=>{t.parent().remove(),$(".entity-posts").append(n),Qe(),Pe(),$(document).trigger("shown.bs.modal")}).catch(()=>{t.removeClass("loading")}),!1})}async function mt(e){return await(await fetch(e)).text()}function pt(){$(".domain-trust").click(function(){let e="kanka_trusted_domains",t=document.cookie.match("(^|;) ?"+e+"=([^;]*)(;|$)");t=t?t[2]:"";let n=$(this).data("domain");t.includes(n)||(t&&(t+="|"),t+=n);let s=new Date;s.setTime(s.getTime()+30*24*60*60*1e3),document.cookie=e+"="+t+";expires="+s.toUTCString()+";sameSite=Strict"})}function gt(){$(".dynamic-row-add").on("click",function(e){e.preventDefault();let t=$(this).data("target"),n=$(this).data("template");return $("."+t).append('
'+$("#"+n).html()+"
"),ve(),$(document).trigger("shown.bs.modal"),!1}),ve()}function ve(){$.each($(".dynamic-row-delete"),function(){$(this).data("init")!==1&&$(this).data("init",1).on("click",function(e){e.preventDefault(),$(this).closest(".parent-delete-row").remove()}).on("keydown",function(e){e.key==="Enter"&&$(this).click()})})}function vt(){$('input[data-toggle="entity-privacy"]').change(function(){let e=$("#entity-is-private");$(this).prop("checked")?e.show():e.hide()})}function _t(){$('select[name="calendar_month"]').change(function(){let e=$(this).find(":selected").data("length");yt(e)})}function yt(e){let t=x.val();t>e&&(t=e),x.html("");for(let n=1;n<=e;n++){let s=n==t?' selected="selected"':"";x.append('")}}var ie;$(document).ready(function(){_e(),$(document).on("shown.bs.modal shown.bs.popover",function(){_e()}),ie=$(".post-perm-add"),ie.length!==0&&(wt(),He())});function wt(){ie.on("click",function(e){e.preventDefault();let t=$(this).data("type"),n=$('select[name="'+t+'"]');if(!n||!n.val())return!1;let s=n.find(":selected")[0],i=$("#post-perm-"+t+"-template").clone().removeClass("hidden").removeAttr("id"),o=i.html().replace(/\$SELECTEDID\$/g,n.val()).replace(/\$SELECTEDNAME\$/g,s.text);return i.html(o).insertBefore($("#post-perm-target")),document.getElementById("post-new-"+t).close(),He(),n.val("").trigger("change"),!1})}function He(){$.each($(".post-delete-perm"),function(){$(this).unbind("click"),$(this).on("click",function(){$(this).closest(".grid").remove()})})}const _e=()=>{$("form.post-visibility").on("submit",function(e){return e.preventDefault(),$.post({url:$(this).attr("action"),data:{visibility_id:$(this).find('[name="visibility_id"]').val()}}).done(function(t){document.getElementById("primary-dialog").close(),$("#visibility-icon-"+t.post_id).html(t.icon),window.showToast(t.toast)}),!1})};var ye;$(document).ready(function(){ye=$("#calendar-year-switcher"),ye.length===1&&($("#calendar-year-switcher-field"),$("#add-calendar-event"),bt()),$(document).on("shown.bs.modal",function(){we()}),$('select[name="recurring_periodicity"]').length===1&&we(),xt()});function bt(){$(".calendar-event-block").each(function(){$(this).data("toggle")!=="dialog"&&$(this).data("url")&&$(this).click(function(){window.location=$(this).data("url")})})}function we(){$('select[name="recurring_periodicity"]').change(function(){this.value?$(".field-recurring-until").show():$(".field-recurring-until").hide()}),$("#calendar-action-existing").click(function(e){e.preventDefault(),$("#calendar-event-first").hide(),$(".calendar-new-event-field").hide(),$("#calendar-event-subform").fadeToggle(),$("#calendar-event-submit").toggle()}),$("#calendar-action-new").click(function(e){e.preventDefault(),$("#calendar-event-first").hide(),$(".calendar-existing-event-field").hide(),$("#calendar-event-subform").fadeToggle(),$("#calendar-event-submit").toggle()}),$("#calendar-event-switch").click(function(e){e.preventDefault(),$("#calendar-event-subform").hide(),$("#calendar-event-first").fadeToggle(),$(".calendar-existing-event-field").show(),$(".calendar-new-event-field").show(),$("#calendar-event-submit").toggle()})}function xt(){$('[data-shortcut="previous"]').length!==0&&$(document).bind("keydown",function(e){(e.ctrlKey||e.metaKey)&&e.which===37?$('[data-shortcut="previous"]').addClass("loading")[0].click():(e.ctrlKey||e.metaKey)&&e.which===39&&$('[data-shortcut="next"]').addClass("loading")[0].click()})}const ze=document.querySelector("dialog#edit-warning"),se=300*1e3;let Fe,ae=!0;$(document).ready(function(){if(!ze)return;let e=document.querySelector('input[name="edit-warning"]');window.openDialog("edit-warning",e.dataset.url),$(document).on("shown.bs.modal",function(){kt()}),$t()});function kt(){ae=!1,$("#entity-edit-warning-ignore").click(function(e){e.preventDefault(),ae=!0,$.ajax({url:$(this).data("url"),type:"POST",context:this}).done(function(){ze.close()})})}function $t(){let e=$("#editing-keep-alive");e.length!==0&&(Fe=e.data("url"),setTimeout(oe,se))}function oe(){if(!ae){setTimeout(oe,se);return}$.ajax({url:Fe,type:"POST"}).done(function(){setTimeout(oe,se)})}var M;let re,be,O;$(document).ready(function(){$(document).on("shown.bs.modal shown.bs.popover",function(){V()}),$(".quick-creator-subform").click(function(){$(document).on("shown.bs.modal",function(){fe()}),window.openDialog("primary-dialog",$(this).data("url"))})});function V(){re=$("#qq-modal-loading"),be=$("#qq-modal-selection"),O=$("#qq-modal-form"),$('[data-toggle="entity-creator"]').unbind("click").click(function(e){return e.preventDefault(),$(this).data("type")==="inline"?($(".quick-creator-body").hide(),$(".quick-creator-footer").hide(),$(".quick-creator-loading").show()):Re(),$.ajax({url:$(this).data("url"),context:this}).done(function(n){re.hide(),be.hide(),O.show().html(n),fe(),he(),$(document).trigger("shown.bs.modal")}),!1})}function Ne(){$("#qq-name-field").unbind("focusout").focusout(function(){$(this).val()&&($(this).parent().parent().find(".duplicate-entity-warning").hide(),$.ajax({url:$(this).data("live")+"?q="+$(this).val()+"&type="+$(this).data("type"),context:this}).done(function(e){if(e.length>0){let t=Object.keys(e).map(function(n){return''+e[n].name+""}).join(", ");$(this).parent().parent().find(".duplicate-entities").html(t),$(this).parent().parent().find(".duplicate-entity-warning").show()}else $(this).parent().parent().find(".duplicate-entity-warning").hide()}))})}function Re(){$("#qq-modal-form").hide(),$("#qq-modal-selection").hide(),$("#qq-modal-loading").show()}function fe(){M=$(".quick-creator-submit"),M.length!==0&&(Ne(),Be(),he(),M.on("click",function(e){let t=$(this).data("action");return t&&$('#entity-creator-form [name="action"]').val(t),!0}),$("#entity-creator-form").submit(function(e){e.preventDefault(),M.prop("disabled",!0).find("span").hide().parent().find("i.fa-spin").show(),$("div.text-error").remove(),$.post({url:$(this).attr("action"),data:$(this).serialize(),context:this}).done(function(t){if(typeof t=="object"){if(t.redirect){window.location.replace(t.redirect);return}let s=new Option(t._name,t._id),i=$("#"+t._target);if(t._multi){let c=i.val();c.push(t._id),i.append(s).val(c)}else i.children().remove().end().append(s).val(t._id);i.trigger("change"),$("#qq-modal-form").html("").show(),$("#qq-modal-loading").hide(),$("#qq-modal-selection").show(),document.getElementById("primary-dialog").close(),le();return}let n=document.getElementById("qq-modal-form");n.innerHTML=t,V(),le()}).fail(function(t){if(t.responseJSON.errors){let n=t.responseJSON.errors;Object.keys(n).forEach(function(c){let d=$('#entity-creator-form [name="'+c+'"]');d.length>0&&d.addClass("input-error").parent().append('
'+n[c][0]+"
")});let i=Object.keys(n)[0],o=$('#entity-creator-form input[name="'+i+'"]');if(o[0]){o[0].scrollIntoView({behavior:"smooth"}),$(".tab-content .active").removeClass("active"),$(".nav-tabs li.active").removeClass("active");let c=$('[name="'+i+'"').closest(".tab-pane");c.addClass("active"),$('a[href="#'+c.attr("id")+'"]').closest("li").addClass("active")}}M.prop("disabled",!1).find("i.fa-spin").hide().parent().find("span").show(),$('#entity-creator-form [name="action"]').val("")})}))}function Be(){$("#entity-creator-back").click(function(e){e.preventDefault(),Re(),$.ajax({url:$(this).data("url"),context:this}).done(function(t){$(this).data("target"),O.html(t).show(),re.hide(),V()})})}function he(){$(".qq-mode-toggle").unbind("click").on("click",function(e){e.preventDefault(),!$(this).hasClass("active")&&($(".qq-mode-toggle").removeClass("active"),$(this).addClass("active"),$(".quick-creator-body").hide(),$(".quick-creator-footer").hide(),$(".quick-creator-loading").show(),$.ajax({url:$(this).data("url")}).done(function(t){O.html(t).show(),le(),$(document).trigger("shown.bs.modal")}))}),$(".qq-action-more").unbind("click").on("click",function(e){e.preventDefault(),$(this).hide(),$(".qq-more-fields").show()}),V()}function le(){he(),Ne(),Be(),fe()}var D,I,Ct=new IntersectionObserver(function(e){e[0].isIntersecting===!0&&de($(".datagrid-onload"))},{threshold:[0]});$(document).ready(function(){Oe(),ce(),K(),Tt(),$(document).on("shown.bs.modal",function(){ce(),me()})});function ce(){$("[data-bulk-action]").unbind("click").on("click",function(){St($(this).data("bulk-action"))}),$(".bulk-print").unbind("click").on("click",function(e){e.preventDefault();let t=$(this).closest("form");t.find(),t.submit()})}function Oe(){var e=$("#datagrid-select-all");e.length>0&&e.unbind("click").click(function(){$(this).prop("checked")?$.each($("input[name='model[]']"),function(){$(this).prop("checked",!0)}):$.each($("input[name='model[]']"),function(){$(this).prop("checked",!1)}),K()}),$.each($("input[name='model[]']"),function(){$(this).change(function(t){K(),t.preventDefault()})})}function St(e){var t=[];$.each($("input[name='model[]']"),function(){$(this).prop("checked")&&t.push($(this).val())}),e==="ajax"?$(document).on("shown.bs.modal",function(){$("#primary-dialog").find('input[name="models"]').val(t.toString())}):$("#datagrid-bulk-"+e+"-models").val(t.toString())}function K(){var e=!0;$.each($("input[name='model[]']"),function(){$(this).prop("checked")&&(e=!1)}),e?$(".datagrid-bulk-actions .btn2").prop("disabled",!0).addClass("btn-disabled"):$(".datagrid-bulk-actions .btn2").prop("disabled",!1).removeClass("btn-disabled").removeClass("disabled")}function Tt(){me(),Ke(),Lt(),K()}function me(){$(".datagrid-bulk").unbind("click").click(function(e){e.preventDefault(),D=$(this).closest("form");let t=[];$.each($("input[name='model[]']"),function(){$(this).prop("checked")&&t.push($(this).val())}),$.ajax({url:D.attr("action")+"?action=edit",method:"POST",data:{model:t}}).done(function(n){let s=document.getElementById("primary-dialog");s.innerHTML=n,window.openDialog("primary-dialog"),$(document).trigger("shown.bs.modal")})}),$(".datagrid-submit").click(function(e){if(e.preventDefault(),D=$(this).closest("form"),D.find('input[name="action"]').val($(this).data("action")),$(this).data("action")==="delete")return window.openDialog("datagrid-bulk-delete"),!1;$(".datagrid-bulk-actions").hide(),$(".datagrid-spinner").show(),D.submit()}),$("#datagrid-action-confirm").click(function(){window.closeDialog("datagrid-bulk-delete"),D.submit()})}function Ke(){$.each($('table[data-render="datagrid2"]'),function(){I=$(this),$(this).find("thead a").click(function(e){e.preventDefault(),de($(this))}),$(this).closest("#datagrid-parent").find('nav[role="navigation"] a').click(function(e){e.preventDefault(),de($(this))})}),Oe(),ce(),me()}function Lt(){$(".datagrid-onload").length!=0&&Ct.observe(document.querySelector(".datagrid-onload"))}function de(e){I.find("thead").hide(),I.find("tbody").hide(),I.find("tfoot").show();let t=e.attr("href"),n=e.data("url");t==="#"&&n&&(t=n);let s=e.data("target")??"#datagrid-parent";$.ajax(t).done(function(i){i.html&&$(s).html(i.html),i.deletes&&$("#datagrid-delete-forms").html(i.deletes),i.url&&window.history.pushState({},"",i.url),Ke(),$(document).trigger("shown.bs.modal")}).fail(function(i){console.error("datagrid2",i),I.find("tfoot").addClass("bg-danger")})}const Ue=()=>{document.querySelectorAll('[data-animate="collapse"]').forEach(n=>{n.addEventListener("click",jt)}),document.querySelectorAll('[data-animate="reveal"]').forEach(n=>{n.addEventListener("change",Dt)})};function jt(e){let t=this.dataset.target;t||(t=this.hash),document.querySelectorAll(t).forEach(s=>{s.classList.toggle("hidden")}),this.classList.toggle("animate-collapsed")}function Dt(e){let t=document.querySelector(this.dataset.target);this.value?t.classList.remove("hidden"):t.classList.add("hidden")}$(document).on("shown.bs.modal",function(){Ue()});Ue();$(document).ready(function(){qt(),Et()});function qt(){let e=$("#bookmark-selector");if(e.length===0)return!1;e.change(function(t){t.preventDefault();let n=$(this).find(":selected");$(".bookmark-subform").addClass("hidden");let s=n.data("target");$(s).removeClass("hidden")})}function Et(){let e=$("#entity-selector");if(e.length===0)return!1;e.val()!=""&&$("#filter-subform").show(),e.change(function(){e.val()==""?($("#filter-subform").hide(),console.log(e.val())):$("#filter-subform").show()})}$(document).ready(function(){Mt()});function Mt(){let e=$("#post-layout-selector");e.length!==0&&e.change(function(t){t.preventDefault(),$(this).find(":selected").val()===""?($(".field-entry").show(),$(".field-location").show(),$(".field-display").show(),$("#post-layout-subform").hide()):($(".field-entry").hide(),$(".field-location").hide(),$(".field-display").hide(),$("#post-layout-subform").show())})}$(document).ready(function(){$(document).on("shown.bs.modal shown.bs.popover",function(){xe()}),$(".form-members").count!==0&&xe()});function xe(){$.each($(".form-members"),function(){let e=$(this);if(e.data("loaded")===1)return;e.data("loaded",1);let t=e.data("allow-clear");e.select2({tags:!0,allowClear:t||!0,minimumInputLength:0,ajax:{quietMillis:500,delay:500,url:e.data("url"),dataType:"json",data:function(n){return{q:$.trim(n.term)}},processResults:function(n){return{results:n}},cache:!0},createTag:function(){}})})}$(document).ready(function(){At(),It(),Ht(),zt(),Pt(),Ft(),Nt()});function At(){$("#campaign-modules").length!==0&&$('input[name="enabled"]').change(function(e){e.preventDefault();let t=$(this).closest(".box-module").find("h3");t.hasClass("loading")||(t.addClass("loading"),axios.post($(this).data("url")).then(n=>{let s=$(this);s.closest(".box-module").find("h3").removeClass("loading"),n.data.success&&(n.data.status?s.closest(".box-module").addClass("module-enabled"):s.closest(".box-module").removeClass("module-enabled"),window.showToast(n.data.toast))}))})}function It(){$(".btn-user-roles").popover({html:!0,sanitize:!1,trigger:"focus"})}function Pt(){document.querySelectorAll(".public-permission").forEach(t=>{t.addEventListener("click",Qt)})}function Qt(e){e.preventDefault(),this.classList.add("loading"),axios.post(this.dataset.url).then(t=>{this.classList.remove("loading"),t.data.success&&(t.data.status?$(this).addClass("enabled"):$(this).removeClass("enabled"),window.showToast(t.data.toast))})}function Ht(){$.each($(".codemirror"),function(){let e=$(this).attr("id");CodeMirror.fromTextArea(document.getElementById(e),{extraKeys:{"Ctrl-Space":"autocomplete"},lineNumbers:!0,lineWrapping:!0,theme:"dracula"})})}function zt(){let e=[].slice.call(document.querySelectorAll(".nested-sortable"));for(let t=0;t0;return!(i.classList.contains("fixed-position")&&c)}})}function Ft(){let e=$("form#campaign-style");e.length!==0&&e.on("submit",function(t){let n=$($(this).data("error"));return $('textarea[name="content"]').val().length<$(this).data("max-content")?(n.hide(),!0):(n.show(),$("form .submit-group .btn").prop("disabled",!1),!1)})}function Nt(){$('input[name="vanity"]').focusout(function(e){let t=$(this).val(),n=$("#vanity-error"),s=$("#vanity-success"),i=$("#vanity-loading");if(n.html("").hide(),s.hide(),!t)return;i.show();let o={};o.vanity=t,$.post({url:$(this).data("url"),method:"POST",context:this,data:o}).done(function(c){$(this).val(c.vanity),s.find("code").html(c.vanity),s.show(),n.hide(),i.hide()}).fail(function(c){let d="";c.responseJSON.errors.vanity.forEach(m=>d+=m+" "),n.html(d).show(),s.hide(),i.hide()})})}const Ve=()=>{document.querySelectorAll("[data-clipboard]").forEach(t=>{t.addEventListener("click",Rt,!1)})};function Rt(e){e.preventDefault(),Bt(this.dataset.clipboard,this);let t=this.dataset.toast;return t&&window.showToast(t),!1}async function Bt(e,t){if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const n=document.createElement("textarea");n.value=e,n.style.position="absolute",n.style.left="-999999px",t.append(n),n.select();try{document.execCommand("copy")}catch(s){console.error(s)}finally{n.remove()}}}Ve();$(document).on("shown.bs.modal",function(e){Ve()});$(document).ready(function(){We()});function We(){$('.toast-container [data-toggle="dismiss"]').unbind("click").on("click",function(e){e.preventDefault();let t=$(this).closest(".toast-message");t.removeClass("opacity-100").addClass("opacity-0"),setTimeout(function(){t.remove()},150)})}window.showToast=function(e,t){t=t||"bg-success text-success-content",t==="error"&&(t="bg-error text-error-content");let n=$('
');n.html('
'+e+'this.options.collapseScreenSize?e("body").removeClass(i.collapsed).trigger(e.Event(o.expanded)):e("body").addClass(i.open).trigger(e.Event(o.expanded))},c.prototype.close=function(){var u=e(window).width();u>this.options.collapseScreenSize?e("body").addClass(i.collapsed).trigger(e.Event(o.collapsed)):e("body").removeClass(i.open+" "+i.collapsed).trigger(e.Event(o.collapsed))},c.prototype.expandOnHover=function(){e(s.mainSidebar).hover((function(){e("body").is(s.mini+s.collapsed)&&e(window).width()>this.options.collapseScreenSize&&this.expand()}).bind(this),(function(){e("body").is(s.expanded)&&this.collapse()}).bind(this))},c.prototype.expand=function(){setTimeout(function(){e("body").removeClass(i.collapsed).addClass(i.expanded)},this.options.expandTransitionDelay)},c.prototype.collapse=function(){setTimeout(function(){e("body").removeClass(i.expanded).addClass(i.collapsed)},this.options.expandTransitionDelay)};function d(u){return this.each(function(){var _=e(this),p=_.data(t);if(!p){var et=e.extend({},n,_.data(),typeof u=="object"&&u);_.data(t,p=new c(et))}u==="toggle"&&p.toggle()})}var m=window.$.fn.pushMenu;window.$.fn.pushMenu=d,window.$.fn.pushMenu.Constructor=c,window.$.fn.pushMenu.noConflict=function(){return window.$.fn.pushMenu=m,this},window.$(document).on("click",s.button,function(u){u.preventDefault(),d.call(window.$(this),"toggle")}),window.$(window).on("load",function(){d.call(window.$(s.button))})}(jQuery);const Ot=()=>{document.querySelectorAll(".banner-notification-dismiss").forEach(e=>{e.addEventListener("click",Kt,!1)}),document.querySelectorAll('[data-dismiss="tutorial"]').forEach(e=>{e.addEventListener("click",Ut,!1)})};function Kt(e){e.preventDefault();let t=this.dataset.dismiss;axios.post(this.dataset.url).then(()=>{if(!t)return;let n=document.querySelector(t);n&&n.classList.add("hidden")})}function Ut(e){e.preventDefault();let t=this.dataset.target;axios.post(this.dataset.url).then(()=>{if(!t)return;let n=document.querySelector(t);n&&n.classList.add("hidden")})}Ot();let Je;$(document).ready(function(){Vt()});function Vt(){let e=$("#element-era-id");e.length!==0&&(Je=e.val(),e.length===1&&e.on("change",function(){Wt(e.val())}))}function Wt(e){e=parseInt(e);let t=$('input[name="era-data-url"]').data("url").replace("/0/","/"+e+"/"),n=$('input[name="oldPosition"]').data("url");$.ajax(t).done(function(s){let i=$('select[name="position"]');i.html("");let o=1;$.each(s.positions,function(c){let d=s.positions[c],m=' selected="selected"';n&&!c&&Je==e&&i.append('"),c&&i.append('"),o++})})}window.initSortable=function(){let e=document.querySelectorAll(".sortable-elements");e.length!==0&&e.forEach(t=>{let n={},s=t.dataset.handle;s&&(n.handle=s),De.create(t,n)})};window.initSortable();window.formErrorHandler=function(e,t){if($(".input-error").removeClass("input-error"),$(".text-error").remove(),$(t).find(".btn-primary").prop("disabled",!1).removeClass("loading"),e.status===503){window.showToast(e.responseJSON.message,"error");return}if(e.status===403){$("#entity-form-403-error").show();return}let n=e.responseJSON.errors,s=[],i=Object.keys(n),o=!0;if(i.forEach(function(u){let _=$('[name="'+u+'"]');_.length>0?_.addClass("input-error").parent().append('
'+n[u][0]+"
"):(o=!1,s.push(n[u][0])),window.showToast(n[u][0],"error")}),!o){let u=$("#entity-form-generic-error .error-logs");u.html(""),s.forEach(function(_){let p=_+"
";u.append(p)}),$("#entity-form-generic-error").show()}if($(t).find(".tab-content").length===0)return;let c=Object.keys(n)[0],d=document.getElementsByName(c);if(!d[0])return;$(".tab-content .active").removeClass("active"),$(".nav-tabs li.active").removeClass("active");let m=$('[name="'+c+'"').closest(".tab-pane");m.addClass("active"),$('a[href="#'+m.attr("id")+'"]').closest("li").addClass("active"),d[0].scrollIntoView({behavior:"smooth"})};const Jt={props:{text:String,title:String}},Gt={class:"mx-5"},Yt=["data-title"],Zt=a("i",{class:"fa-solid fa-chevrons-left","aria-hidden":"true","data-sidebar":"collapse"},null,-1),Xt=a("i",{class:"fa-solid fa-chevrons-right","aria-hidden":"true","data-sidebar":"expand"},null,-1),en={class:"sr-only"};function tn(e,t,n,s,i,o){return r(),l("div",Gt,[a("span",{role:"button",class:"sidebar-toggle text-center cursor-pointer","data-toggle":"tooltip","data-title":n.title,"data-placement":"right","data-html":"true",tabindex:"3"},[Zt,Xt,a("span",en,f(n.text),1)],8,Yt)])}const nn=S(Jt,[["render",tn]]),sn={props:["entity"],methods:{backgroundImage:function(e){return"url('"+e.image+"')"},preview:function(e){this.emitter.emit("preview",e)}}},an=["data-id"],on={class:"flex-none"},rn=["href","title"],ln={class:"flex-grow truncate pl-1"},cn=["title","innerHTML"],dn=["innerHTML"];function un(e,t,n,s,i,o){return r(),l("div",{class:"flex justify-center gap-1 cursor-pointer hover:bg-base-200 rounded w-full","data-id":n.entity.id,onClick:t[1]||(t[1]=c=>o.preview(n.entity))},[a("div",on,[a("a",{href:n.entity.link,style:E({backgroundImage:o.backgroundImage(n.entity)}),onClick:t[0]||(t[0]=X(()=>{},["stop"])),title:n.entity.name,class:"rounded cover-background block h-16 w-16"},null,12,rn)]),a("div",ln,[a("div",{class:"font-extrabold entity-name truncate",title:n.entity.name,innerHTML:n.entity.name},null,8,cn),a("div",{class:"entity-type text-xs",innerHTML:n.entity.type},null,8,dn)])],8,an)}const Ge=S(sn,[["render",un]]),fn={props:["entity"],components:{LookupEntity:Ge},data(){return{focus_profile:!0,focus_pins:!1,focus_access:!1}},methods:{hasTitle(){return this.entity.title},tagClass(e){let t="inline-block rounded-xl px-3 py-1 bg-base-100 text-base-content text-xs";return e.colour&&(t+=" bg-"+e.colour,e.colour==="black"&&(t+=" text-white")),t},backgroundImage:function(){return"url('"+this.entity.image+"')"},tabClass:function(e){let t="p-1 px-1 mx-1 pt-2 select-none text-center truncate border-b-2 border-solid border-r-0 border-t-0 border-l-0";return e==="profile"&&this.focus_profile||e==="links"&&this.focus_pins||e==="access"&&this.focus_access?t+=" font-black border-slate-600":t+=" cursor-pointer border-base-100",t},switchTab:function(e){this.focus_profile=!1,this.focus_pins=!1,this.focus_access=!1,e==="profile"?this.focus_profile=!0:e==="links"?this.focus_pins=!0:e==="access"&&(this.focus_access=!0)},profileClass:function(e){return"entity-profile-"+e.slug}}},hn={class:"entity-header p-3 bg-entity-focus"},mn={class:"w-full flex items-center"},pn=["href","title","innerHTML"],gn={key:0,class:"fa-solid fa-skull mx-2","aria-hidden":"true"},vn=["href"],_n=a("i",{class:"fa-solid fa-external-link","aria-hidden":"true","aria-label":"Open in a new window"},null,-1),yn=[_n],wn=["innerHTML"],bn={key:1,class:"my-1 w-full flex flex-wrap gap-1"},xn=["href","data-tag-id","data-tag-slug","innerHTML"],kn=["href","data-tag"],$n=a("i",{class:"fa-duotone circle-location-arrow","aria-hidden":"true","aria-label":"Location"},null,-1),Cn=["href","title"],Sn={class:"entity-sections"},Tn={class:"tabs flex my-2 justify-center items-center border-solid border-slate-600 border-b-2 border-r-0 border-t-0 border-l-0"},Ln={key:0,class:"tab-profile p-5 flex flex-col gap-5"},jn={key:0,class:"entity-pinned-attributes flex flex-col gap-3"},Dn=["data-attribute","data-target"],qn={class:"inline-block uppercase font-extrabold mr-1"},En=["innerHTML"],Mn={key:1},An={class:"flex flex-col gap-3"},In={class:"uppercase font-extrabold truncate"},Pn={key:1,class:"tab-links p-3"},Qn={key:0,class:"text-center italic"};function Hn(e,t,n,s,i,o){const c=L("LookupEntity");return r(),l(v,null,[a("div",hn,[a("div",mn,[a("a",{class:"text-2xl font-extrabold entity-name",href:n.entity.link,title:n.entity.name,innerHTML:n.entity.name},null,8,pn),n.entity.is_dead?(r(),l("i",gn)):h("",!0),a("a",{class:"ml-2 text-xs",target:"_blank",href:n.entity.link},yn,8,vn)]),o.hasTitle()?(r(),l("div",{key:0,class:"block w-full",innerHTML:n.entity.title},null,8,wn)):h("",!0),n.entity.tags.length>0?(r(),l("div",bn,[(r(!0),l(v,null,w(n.entity.tags,d=>(r(),l("a",{class:g(o.tagClass(d)),href:d.link,"data-tag-id":d.id,"data-tag-slug":d.slug,innerHTML:d.name},null,10,xn))),256))])):h("",!0),n.entity.location?(r(),l("a",{key:2,class:"block w-full cursor-pointer my-2",href:n.entity.location.link,"data-tag":n.entity.id},[$n,b(" "+f(n.entity.location.name),1)],8,kn)):h("",!0),n.entity.image?(r(),l("a",{key:3,href:n.entity.link,style:E({backgroundImage:o.backgroundImage()}),title:n.entity.name,class:"rounded cover-background block w-full aspect-square"},null,12,Cn)):h("",!0)]),a("div",Sn,[a("div",Tn,[a("div",{class:g(o.tabClass("profile")),onClick:t[0]||(t[0]=d=>o.switchTab("profile"))},f(n.entity.texts.profile),3),a("div",{class:g(o.tabClass("links")),onClick:t[1]||(t[1]=d=>o.switchTab("links"))},f(n.entity.texts.connections),3),a("div",{class:g(o.tabClass("access")),onClick:t[2]||(t[2]=d=>o.switchTab("access"))},null,2)]),i.focus_profile?(r(),l("div",Ln,[n.entity.attributes.length>0?(r(),l("div",jn,[(r(!0),l(v,null,w(n.entity.attributes,d=>(r(),l("div",{class:"","data-attribute":d.name,"data-target":d.id},[a("span",qn,f(d.name),1),a("span",{innerHTML:d.value},null,8,En)],8,Dn))),256))])):h("",!0),n.entity.attributes.length>0?(r(),l("hr",Mn)):h("",!0),a("div",An,[(r(!0),l(v,null,w(n.entity.profile,d=>(r(),l("div",{class:g(["",o.profileClass(d)])},[a("div",In,f(d.field),1),a("div",null,f(d.value),1)],2))),256))])])):h("",!0),i.focus_pins?(r(),l("div",Pn,[(r(!0),l(v,null,w(n.entity.connections,d=>(r(),T(c,{entity:d},null,8,["entity"]))),256)),n.entity.connections.length===0?(r(),l("p",Qn,f(n.entity.texts["no-connections"]),1)):h("",!0)])):h("",!0)])],64)}const zn=S(fn,[["render",Hn]]),Fn={directives:{clickOutside:Ee.directive},props:{api_lookup:String,api_recent:String,placeholder:String,keyboard_tooltip:String},components:{LookupEntity:Ge,EntityPreview:zn},data(){return{has_drawer:!1,term:null,show_loading:!1,show_recent:!1,show_preview:!1,show_results:!1,show_bookmarks:!1,recent:[],bookmarks:[],indexes:[],results:[],cached:{},has_recent:!1,texts:{},timeout_id:null,preview_entity:null}},watch:{term(e,t){this.termChanged()}},methods:{termChanged(){this.term.trim().length<3||(this.timeout_id!==void 0&&clearTimeout(this.timeout_id),this.show_loading=!0,this.timeout_id=setTimeout(()=>this.lookup(),500))},lookup(){let e=this.term.trim(),t=e.toLowerCase().replace(/ /g,"-").replace(/ [^\w-]+/g,"");if(this.cached[t])return this.displayCached(t);fetch(this.api_lookup+"?"+new URLSearchParams({q:e,v2:!0})).then(n=>n.json()).then(n=>this.parseLookupResponse(n,t))},focus(){this.api_recent&&(this.show_preview=!1,this.has_drawer=!0,this.fetch())},escape(){this.timeout_id!==void 0&&clearTimeout(this.timeout_id),this.close()},fetch(){if(this.has_recent){this.show_recent=!0;return}this.show_loading=!0,fetch(this.api_recent).then(e=>e.json()).then(e=>{this.recent=e.recent,this.bookmarks=e.bookmarks,this.indexes=e.indexes,this.texts.recents=e.texts.recents,this.texts.results=e.texts.results,this.texts.hint=e.texts.hint,this.texts.bookmarks=e.texts.bookmarks,this.texts.index=e.texts.index,this.texts.keyboard=e.texts.keyboard,this.texts.empty_results=e.texts.empty_results,this.show_loading=!1,this.show_recent=!0,this.has_recent=!0,this.bookmarks.length>0?this.show_bookmarks=!0:this.show_bookmarks=!1}).catch(e=>{this.show_loading=!1,this.show_recent=!0,this.has_recent=!1})},parseLookupResponse(e,t){this.results=e.entities,this.cached[t]=e.entities,this.showResults()},displayCached(e){this.results=this.cached[e],this.showResults()},showResults(){this.timeout_id=null,this.show_preview=!1,this.show_loading=!1,this.show_results=!0},loadPreview(e){this.show_loading=!0,fetch(e.preview).then(t=>t.json()).then(t=>this.parsePreviewResponse(t))},parsePreviewResponse(e){this.preview_entity=e,this.show_loading=!1,this.show_preview=!0,this.show_recent=!1},onClickOutside(e){this.close()},close(){this.show_recent=!1,this.show_loading=!1,this.show_preview=!1,this.$refs.searchField.blur()},showBookmarks(){this.show_bookmarks=!0},showIndexes(){this.show_bookmarks=!1},modeClass(e){return e&&this.show_bookmarks||!e&&!this.show_bookmarks?" underline":""}},mounted(){this.emitter.on("preview",e=>{this.loadPreview(e)})}},Nn={class:"flex grow mr-2"},Rn={class:"relative grow field flex items-center"},Bn=["placeholder"],On={class:"absolute right-1 hidden md:inline"},Kn=["data-title"],Un={key:0,class:"search-drawer absolute top-0 left-0 mt-12 h-sidebar w-sidebar bg-navbar bg-base-100 shadow-r overflow-y-auto"},Vn={key:0,class:"text-center"},Wn=a("i",{class:"fa-solid fa-spinner fa-spin","aria-hidden":"true","aria-label":"Loading"},null,-1),Jn=[Wn],Gn={key:1,class:"search-recent bg-lookup p-2 min-h-full shadow-r flex flex-col items-stretch"},Yn={key:0,class:"flex-none"},Zn={class:"italic text-xs text-center"},Xn={class:"grow flex flex-col gap-5 p-2"},ei={key:0,class:"search-results flex flex-col gap-2"},ti={class:"text-sm uppercase"},ni={key:0,class:"text-neutral-content text-sm"},ii={key:1,class:"recent-searches flex flex-col gap-2"},si={class:"text-sm uppercase"},ai={key:2,class:"flex gap-5 justify-center"},oi={key:3,class:"flex flex-col gap-4"},ri=["href","title"],li=["innerHTML"],ci={key:4,class:"flex flex-col gap-4"},di=["href","title"],ui=["innerHTML"],fi={key:1,class:"flex-none text-xs text-center"},hi=a("hr",null,null,-1),mi=["innerHTML"],pi={key:2,class:"search-preview bg-lookup min-h-full shadow-r"};function gi(e,t,n,s,i,o){const c=L("LookupEntity"),d=L("EntityPreview"),m=qe("click-outside");return ee((r(),l("div",Nn,[a("div",Rn,[ee(a("input",{type:"text",class:"leading-4 w-20 md:w-full",maxlength:"25",ref:"searchField",id:"entity-lookup","onUpdate:modelValue":t[0]||(t[0]=u=>i.term=u),onClick:t[1]||(t[1]=u=>o.focus()),onFocus:t[2]||(t[2]=u=>o.focus()),onKeydown:t[3]||(t[3]=nt(u=>o.escape(),["esc"])),placeholder:n.placeholder},null,40,Bn),[[it,i.term]]),a("span",On,[a("span",{class:"flex-none keyboard-shortcut py-1",id:"lookup-kb-shortcut","data-toggle":"tooltip","data-title":n.keyboard_tooltip,"data-html":"true","data-placement":"bottom"}," K ",8,Kn)])]),i.show_recent||i.show_loading||i.show_preview?(r(),l("aside",Un,[i.show_loading?(r(),l("div",Vn,Jn)):h("",!0),i.show_recent?(r(),l("div",Gn,[i.show_results?h("",!0):(r(),l("div",Yn,[a("p",Zn,f(i.texts.hint),1)])),a("div",Xn,[i.show_results?(r(),l("div",ei,[a("div",ti,f(i.texts.results),1),i.results.length===0?(r(),l("div",ni,f(i.texts.empty_results),1)):(r(!0),l(v,{key:1},w(i.results,u=>(r(),T(c,{entity:u},null,8,["entity"]))),256))])):h("",!0),i.recent.length>0?(r(),l("div",ii,[a("div",si,f(i.texts.recents),1),(r(!0),l(v,null,w(i.recent,u=>(r(),T(c,{entity:u},null,8,["entity"]))),256))])):h("",!0),i.bookmarks.length>0?(r(),l("div",ai,[i.bookmarks.length>0?(r(),l("button",{key:0,class:g(["grow text-sm uppercase hover:underline",this.modeClass(!0)]),onClick:t[4]||(t[4]=u=>o.showBookmarks())},f(i.texts.bookmarks),3)):h("",!0),a("button",{class:g(["grow text-sm uppercase hover:underline",this.modeClass(!1)]),onClick:t[5]||(t[5]=u=>o.showIndexes())},f(i.texts.index),3)])):h("",!0),i.show_bookmarks?(r(),l("div",oi,[(r(!0),l(v,null,w(i.bookmarks,u=>(r(),l("a",{href:u.url,onClick:t[6]||(t[6]=X(()=>{},["stop"])),title:u.text,class:"flex gap-2 items-center"},[a("i",{class:g(["w-4",u.icon]),"aria-hidden":"true"},null,2),a("span",{innerHTML:u.text},null,8,li)],8,ri))),256))])):(r(),l("div",ci,[(r(!0),l(v,null,w(i.indexes,u=>(r(),l("a",{href:u.url,onClick:t[7]||(t[7]=X(()=>{},["stop"])),title:u.name,class:"flex gap-2 items-center"},[a("i",{class:g(["w-4 text-center",u.icon]),"aria-hidden":"true"},null,2),a("span",{innerHTML:u.name},null,8,ui)],8,di))),256))]))]),i.show_loading?h("",!0):(r(),l("div",fi,[hi,a("p",{class:"italic text-xs text-center",innerHTML:i.texts.keyboard},null,8,mi)]))])):h("",!0),i.show_preview?(r(),l("div",pi,[z(d,{entity:i.preview_entity},null,8,["entity"])])):h("",!0)])):h("",!0)])),[[m,o.onClickOutside]])}const vi=S(Fn,[["render",gi]]),_i={props:["campaign"],methods:{backgroundImage:function(e){return e.image?"url("+e.image+")":""},campaignClass:function(e){return"campaign flex items-end border border-solid rounded-lg cover-background relative h-24 overflow-hidden text-break shadow-xs hover:shadow-md border-0"+(e.is_boosted?" boosted":"")}}},yi=["href","title"],wi=["innerHTML"];function bi(e,t,n,s,i,o){return r(),l("a",{class:g(o.campaignClass(n.campaign)),href:n.campaign.url,style:E({backgroundImage:o.backgroundImage(n.campaign)}),title:n.campaign.name},[a("div",{class:"flex items-end justify-center name w-full text-xs p-2 pt-6 text-center",innerHTML:n.campaign.name},null,8,wi)],14,yi)}const xi=S(_i,[["render",bi]]),ki={props:["notification"],data(){return{is_dismissed:!1,is_loading:!1}},methods:{backgroundClass:function(e){let t="notification bg-base-200 flex justify-center items-center p-2 rounded-md";return e.is_read?t:t+" unread"},iconClass:function(e){return"fa-solid fa-"+e.icon},dismiss:function(e){this.is_loading=!0,axios.post(e.dismiss).then(()=>{this.is_dismissed=!0,this.emitter.emit("read_notification",e)})}}},$i=["data-id"],Ci={class:"flex-none p-2"},Si=["innerHTML","href"],Ti=["title"],Li=a("i",{class:"fa-solid fa-times","aria-hidden":"true"},null,-1),ji=[Li],Di={key:1,class:"flex-none p-2"},qi=a("i",{class:"fa-solid fa-spinner fa-spin","aria-hidden":"true"},null,-1),Ei=[qi],Mi=["data-id"],Ai={class:"flex-none p-2"},Ii=["innerHTML"],Pi=["title"],Qi=a("i",{class:"fa-solid fa-times","aria-hidden":"true"},null,-1),Hi=[Qi],zi={key:1,class:"flex-none p-2"},Fi=a("i",{class:"fa-solid fa-spinner fa-spin","aria-hidden":"true"},null,-1),Ni=[Fi];function Ri(e,t,n,s,i,o){return n.notification.url&&!i.is_dismissed?(r(),l("div",{key:0,class:g(o.backgroundClass(n.notification)),"data-id":n.notification.id},[a("div",Ci,[a("i",{class:g(o.iconClass(n.notification)),"aria-hidden":"true"},null,2)]),a("a",{class:"flex-grow p-2 break-all",innerHTML:n.notification.text,href:n.notification.url},null,8,Si),this.is_loading?(r(),l("div",Di,Ei)):(r(),l("div",{key:0,class:"flex-none p-2 cursor-pointer dismissable",onClick:t[0]||(t[0]=c=>o.dismiss(n.notification)),title:n.notification.dismiss_text},ji,8,Ti))],10,$i)):i.is_dismissed?h("",!0):(r(),l("div",{key:1,class:g(o.backgroundClass(n.notification)),"data-id":n.notification.id},[a("div",Ai,[a("i",{class:g(o.iconClass(n.notification)),"aria-hidden":"true"},null,2)]),a("div",{class:"flex-grow p-2",innerHTML:n.notification.text},null,8,Ii),this.is_loading?(r(),l("div",zi,Ni)):(r(),l("div",{key:0,class:"flex-none p-2 cursor-pointer dismissable",onClick:t[1]||(t[1]=c=>o.dismiss(n.notification)),title:n.notification.dismiss_text},Hi,8,Pi))],10,Mi))}const Bi=S(ki,[["render",Ri]]),Oi={props:["release"],data(){return{is_dismissed:!1,is_loading:!1}},methods:{backgroundClass:function(e){return"release bg-base-200 flex justify-center items-center p-2 rounded-md"},dismiss:function(e){this.is_loading=!0,axios.post(e.dismiss).then(()=>{this.is_dismissed=!0,this.emitter.emit("read_release",e)})}}},Ki=["data-id"],Ui={class:"flex-grow p-2"},Vi=["innerHTML","href"],Wi=["innerHTML"],Ji=["title"],Gi=a("i",{class:"fa-solid fa-times","aria-hidden":"true"},null,-1),Yi=[Gi],Zi={key:1,class:"flex-none p-2"},Xi=a("i",{class:"fa-solid fa-spinner fa-spin","aria-hidden":"true"},null,-1),es=[Xi];function ts(e,t,n,s,i,o){return i.is_dismissed?h("",!0):(r(),l("div",{key:0,class:g(o.backgroundClass(n.release)),"data-id":n.release.id},[a("div",Ui,[a("a",{innerHTML:n.release.title,class:"font-bold cursor-pointer block w-full",href:n.release.url,target:"_blank"},null,8,Vi),a("p",{innerHTML:n.release.text},null,8,Wi)]),this.is_loading?(r(),l("div",Zi,es)):(r(),l("div",{key:0,class:"flex-none p-2 cursor-pointer dismissable",onClick:t[0]||(t[0]=c=>o.dismiss(n.release)),title:n.release.dismiss_text},Yi,8,Ji))],10,Ki))}const ns=S(Oi,[["render",ts]]),is=a("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[a("g",{transform:"translate(-219.000000, -200.000000)",fill:"currentcolor"},[a("g",{id:"icons",transform:"translate(56.000000, 160.000000)"},[a("path",{d:"M181.9,54 L179.8,54 C178.63975,54 177.7,54.895 177.7,56 L177.7,58 C177.7,59.105 178.63975,60 179.8,60 L181.9,60 C183.06025,60 184,59.105 184,58 L184,56 C184,54.895 183.06025,54 181.9,54 M174.55,54 L172.45,54 C171.28975,54 170.35,54.895 170.35,56 L170.35,58 C170.35,59.105 171.28975,60 172.45,60 L174.55,60 C175.71025,60 176.65,59.105 176.65,58 L176.65,56 C176.65,54.895 175.71025,54 174.55,54 M167.2,54 L165.1,54 C163.93975,54 163,54.895 163,56 L163,58 C163,59.105 163.93975,60 165.1,60 L167.2,60 C168.36025,60 169.3,59.105 169.3,58 L169.3,56 C169.3,54.895 168.36025,54 167.2,54 M181.9,47 L179.8,47 C178.63975,47 177.7,47.895 177.7,49 L177.7,51 C177.7,52.105 178.63975,53 179.8,53 L181.9,53 C183.06025,53 184,52.105 184,51 L184,49 C184,47.895 183.06025,47 181.9,47 M174.55,47 L172.45,47 C171.28975,47 170.35,47.895 170.35,49 L170.35,51 C170.35,52.105 171.28975,53 172.45,53 L174.55,53 C175.71025,53 176.65,52.105 176.65,51 L176.65,49 C176.65,47.895 175.71025,47 174.55,47 M167.2,47 L165.1,47 C163.93975,47 163,47.895 163,49 L163,51 C163,52.105 163.93975,53 165.1,53 L167.2,53 C168.36025,53 169.3,52.105 169.3,51 L169.3,49 C169.3,47.895 168.36025,47 167.2,47 M181.9,40 L179.8,40 C178.63975,40 177.7,40.895 177.7,42 L177.7,44 C177.7,45.105 178.63975,46 179.8,46 L181.9,46 C183.06025,46 184,45.105 184,44 L184,42 C184,40.895 183.06025,40 181.9,40 M174.55,40 L172.45,40 C171.28975,40 170.35,40.895 170.35,42 L170.35,44 C170.35,45.105 171.28975,46 172.45,46 L174.55,46 C175.71025,46 176.65,45.105 176.65,44 L176.65,42 C176.65,40.895 175.71025,40 174.55,40 M169.3,42 L169.3,44 C169.3,45.105 168.36025,46 167.2,46 L165.1,46 C163.93975,46 163,45.105 163,44 L163,42 C163,40.895 163.93975,40 165.1,40 L167.2,40 C168.36025,40 169.3,40.895 169.3,42"})])])],-1),ss=[is],as={__name:"GridSvg",props:{size:Number},setup(e){const t=e;function n(){return"w-"+t.size+" h-"+t.size}return(s,i)=>(r(),l("svg",{class:g(n()),viewBox:"0 -0.5 21 21",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":"true"},ss,2))}},os={directives:{clickOutside:Ee.directive},props:{user_id:{type:String},api:{type:String},fetch:{type:String},initials:{type:String},avatar:{type:String},campaign_id:void 0,has_alerts:{type:Boolean}},components:{GridSvg:as,Campaign:xi,Notification:Bi,Release:ns},data(){return{alert_delta:60*1e3,is_loading:!1,is_expanded:!1,has_data:!1,view_campaigns:!1,view_profile:!1,profile:{},campaigns:{},notifications:{},marketplace:{},releases:{},show_alerts:!1,is_loaded:!1}},methods:{openCampaigns:function(){this.view_campaigns=!0,this.view_profile=!1,this.loadData()},openProfile:function(){this.view_profile=!0,this.view_campaigns=!1,this.loadData()},loadData:function(){this.is_expanded=!0,!this.has_data&&(this.is_loading=!0,fetch(this.api).then(e=>e.json()).then(e=>{this.profile=e.profile,this.campaigns=e.campaigns,this.notifications=e.notifications,this.marketplace=e.marketplace,this.releases=e.releases,this.show_alerts=e.has_unread,this.has_data=!0,this.is_loading=!1,this.is_loaded=!0}))},blockClass:function(e){return e?"block p-4 flex-grow items-center focus:box-shadow":"block p-4 items-center bg-base-200 cursor-pointer flex-none focus:box-shadow"},logout:function(){document.getElementById("logout-form").submit()},onClickOutside(e){this.is_expanded=!1},readRelease:function(e){let t=this.releases.releases.findIndex(n=>n.id===e.id);this.releases.releases.slice(t,1),this.updateUnread()},readNotification:function(e){let t=this.notifications.messages.findIndex(n=>n.id==e.id);this.notifications.messages.slice(t,1),this.updateUnread()},updateUnread:function(){this.notifications.messages.length===0&&this.releases.releases.length===0&&(this.show_alerts=!1)},updateAlerts:function(){let e=localStorage.getItem("last_notification-"+this.user_id),n=new Date().getTime()-60*5e3;if(!e||et.json()).then(t=>{localStorage.setItem("notification-has-alerts-"+this.user_id,t.has_alerts),this.updateAlerts()})},queueFetch:function(){let e=this;setTimeout((function(){e.updateAlerts()}).bind(this),this.alert_delta)},showInitials:function(){return this.avatar.startsWith("/images/")},profilePictureUrl:function(){return"url("+this.avatar+")"}},mounted(){this.emitter.on("read_release",e=>{this.readRelease(e)}),this.emitter.on("read_notification",e=>{this.readNotification(e)}),this.show_alerts=this.has_alerts,this.queueFetch()}},rs={class:"nav-switcher flex items-center justify-center h-12"},ls=a("span",{class:"sr-only"},"Campaigns",-1),cs={class:"indicator relative inline-flex w-max"},ds={key:0,class:"notification-badge left-auto top-auto w-fit inline-flex absolute content-center items-center z-10"},us={key:1,class:"profile-box rounded-lg p-2 text-center font-bold"},fs={key:0,class:"navigation-drawer bg-base-100 h-full overflow-y-auto fixed top-0 right-0 rounded-l-2xl shadow-lg"},hs={key:0,class:"temporary p-8 text-center"},ms=a("i",{class:"fa-solid fa-spinner fa-spin","aria-hidden":"true"},null,-1),ps=[ms],gs={key:1,class:""},vs={class:"header flex"},_s={key:0,class:"full flex items-center gap-4"},ys={class:"flex-none"},ws={class:"flex-grow"},bs={class:"font-bold"},xs=["title"],ks={key:0,class:"full flex items-center gap-4"},$s={key:0,class:"flex-none profile-box rounded-lg p-2 text-center uppercase font-bold"},Cs={class:"flex-grow"},Ss={class:"font-bold"},Ts=["title"],Ls={key:0,class:"flex-none profile-box rounded-lg p-2 text-center uppercase font-bold"},js={key:0,class:"profile p-5 flex flex-col gap-5"},Ds={key:0,class:"notifications"},qs={class:"flex w-full py-2"},Es={class:"flex-grow uppercase font-bold"},Ms={class:"flex-grow text-right"},As=["href"],Is={class:"flex flex-col gap-2"},Ps={key:0,class:"no-notifications help-block text-neutral-content italic"},Qs={key:1,class:"releases"},Hs={class:"flex w-full py-2"},zs={class:"flex-grow uppercase font-bold"},Fs={class:"flex flex-col gap-2"},Ns={key:2,class:"marketplace"},Rs={class:"flex w-full py-2"},Bs={class:"flex-grow uppercase font-bold"},Os={class:"flex-grow text-right"},Ks=["href"],Us={class:"grid grid-cols-3 gap-2"},Vs=["href"],Ws=a("div",{class:"icon bg-base-200 rounded-full w-14 h-14 text-3xl aspect-square flex justify-center items-center"},[a("i",{class:"fa-solid fa-palette","aria-hidden":"true"})],-1),Js={class:"text-muted text-xs"},Gs=["href"],Ys=a("div",{class:"icon bg-base-200 rounded-full w-14 h-14 text-3xl aspect-square flex justify-center items-center"},[a("i",{class:"fa-solid fa-columns","aria-hidden":"true"})],-1),Zs={class:"text-muted text-xs"},Xs=["href"],ea=a("div",{class:"icon bg-base-200 rounded-full w-14 h-14 text-3xl aspect-square flex justify-center items-center"},[a("i",{class:"fa-solid fa-dice-d20","aria-hidden":"true"})],-1),ta={class:"text-muted text-xs"},na={key:3,class:"subscription"},ia={class:"uppercase font-bold py-2"},sa=["href"],aa={class:"flex-none p-2"},oa=["src","alt"],ra={class:"flex-grow p-2"},la={class:"font-bold text-lg"},ca={key:0,class:"more"},da=a("br",null,null,-1),ua={key:1,class:"more"},fa={class:"link flex gap-1 items-center"},ha=a("i",{class:"fa-duotone fa-credit-card","aria-hidden":"true"},null,-1),ma=a("i",{class:"fa-brands fa-paypal","aria-hidden":"true"},null,-1),pa={key:4,class:"m-0 p-0 list-none flex flex-col gap-2"},ga=["href"],va=a("i",{class:"fa-solid fa-cog mr-3","aria-hidden":"true"},null,-1),_a=["href"],ya=a("i",{class:"fa-solid fa-user mr-3","aria-hidden":"true"},null,-1),wa=["href"],ba=a("i",{class:"fa-solid fa-question-circle mr-3","aria-hidden":"true"},null,-1),xa=a("i",{class:"fa-solid fa-sign-out mr-3","aria-hidden":"true"},null,-1),ka={key:5,class:"m-0 p-0 list-none flex flex-col gap-2"},$a=["href"],Ca=a("i",{class:"fa-solid fa-sign-out-alt mr-3","aria-hidden":"true"},null,-1),Sa={key:1,class:"campaigns p-5"},Ta={key:0,class:"campaigns flex flex-col gap-5"},La={class:"flex flex-col gap-2"},ja={class:"flex w-full"},Da={class:"flex-grow uppercase font-bold"},qa={key:0,class:"flex-grow text-right"},Ea=["href"],Ma={class:"grid grid-cols-2 md:grid-cols-3 gap-5"},Aa=["href"],Ia={class:"text-xs text-break uppercase"},Pa=a("i",{class:"fa-solid fa-plus","aria-hidden":"true",style:{display:"none"}},null,-1),Qa={key:0},Ha={class:"flex flex-col gap-2"},za={key:0,class:"uppercase"},Fa={key:1,class:"grid grid-cols-2 md:grid-cols-3 gap-5 following"},Na=["href"],Ra={class:"text-xs uppercase text-break"};function Ba(e,t,n,s,i,o){const c=L("GridSvg"),d=L("Notification"),m=L("Release"),u=L("Campaign"),_=qe("click-outside");return r(),l(v,null,[a("div",rs,[a("div",{class:"campaigns inline cursor-pointer text-center px-3 text-2xl",onClick:t[0]||(t[0]=p=>o.openCampaigns()),"aria-label":"Switch campaigns",tabindex:"0",role:"button"},[z(c,{size:7}),ls]),a("div",{class:"profile inline cursor-pointer text-center uppercase pt-1",onClick:t[1]||(t[1]=p=>o.openProfile()),"aria-label":"Profile settings",tabindex:"0",role:"button"},[a("div",cs,[i.show_alerts?(r(),l("span",ds)):h("",!0),o.showInitials()?(r(),l("div",us,f(n.initials),1)):(r(),l("div",{key:2,class:"w-9 h-9 rounded-lg cover-background",style:E({backgroundImage:o.profilePictureUrl()})},null,4))])])]),i.is_expanded?ee((r(),l("div",fs,[i.is_loading?(r(),l("div",hs,ps)):(r(),l("div",gs,[a("div",vs,[a("div",{class:g(o.blockClass(i.view_campaigns)),onClick:t[2]||(t[2]=p=>o.openCampaigns()),tabindex:"0",role:"button","aria-label":"Campaign list"},[i.view_campaigns?(r(),l("div",_s,[a("div",ys,[z(c,{size:6})]),a("div",ws,[a("div",bs,f(i.campaigns.texts.campaigns),1),a("div",null,f(i.campaigns.texts.count),1)])])):(r(),l("div",{key:1,class:"flex items-center justify-center h-full",title:i.campaigns.texts.campaigns},[z(c,{size:6})],8,xs))],2),a("div",{class:g(o.blockClass(i.view_profile)),onClick:t[3]||(t[3]=p=>o.openProfile()),tabindex:"0",role:"button","aria-label":"Profile pane"},[i.view_profile?(r(),l("div",ks,[o.showInitials()?(r(),l("div",$s,f(n.initials),1)):(r(),l("div",{key:1,class:"flex-none w-9 h-9 rounded-lg cover-background",style:E({backgroundImage:o.profilePictureUrl()})},null,4)),a("div",Cs,[a("div",Ss,f(i.profile.name),1),a("div",null,f(i.profile.created),1)])])):(r(),l("div",{key:1,class:"",title:i.profile.your_profile},[o.showInitials()?(r(),l("div",Ls,f(n.initials),1)):(r(),l("div",{key:1,class:"flex-none w-9 h-9 rounded-lg cover-background",style:E({backgroundImage:o.profilePictureUrl()})},null,4))],8,Ts))],2)]),i.view_profile?(r(),l("div",js,[i.notifications.title?(r(),l("div",Ds,[a("div",qs,[a("div",Es,f(i.notifications.title),1),a("div",Ms,[a("a",{href:i.notifications.all.url},f(i.notifications.all.text),9,As)])]),a("div",Is,[(r(!0),l(v,null,w(i.notifications.messages,p=>(r(),T(d,{notification:p},null,8,["notification"]))),256))]),i.notifications.messages.length===0?(r(),l("div",Ps,f(i.notifications.none),1)):h("",!0)])):h("",!0),i.releases.title&&i.releases.releases.length>0?(r(),l("div",Qs,[a("div",Hs,[a("div",zs,f(i.releases.title),1)]),a("div",Fs,[(r(!0),l(v,null,w(i.releases.releases,p=>(r(),T(m,{release:p},null,8,["release"]))),256))])])):h("",!0),!i.profile.is_impersonating&&i.marketplace.title?(r(),l("div",Ns,[a("div",Rs,[a("div",Bs,f(i.marketplace.title),1),a("div",Os,[a("a",{href:i.marketplace.explore.url,target:"_blank"},f(i.marketplace.explore.text),9,Ks)])]),a("div",Us,[a("a",{href:i.marketplace.themes.url,class:"border py-2 items-center justify-center rounded-md hover:shadow-md flex flex-col gap-1",target:"_blank"},[Ws,a("div",null,f(i.marketplace.themes.title),1),a("div",Js,f(i.marketplace.themes.number),1)],8,Vs),a("a",{href:i.marketplace.sheets.url,class:"border py-2 items-center justify-center rounded-md hover:shadow-md flex flex-col gap-1",target:"_blank"},[Ys,a("div",null,f(i.marketplace.sheets.title),1),a("div",Zs,f(i.marketplace.sheets.number),1)],8,Gs),a("a",{href:i.marketplace.content.url,class:"border py-2 items-center justify-center rounded-md hover:shadow-md flex flex-col gap-1",target:"_blank"},[ea,a("div",null,f(i.marketplace.content.title),1),a("div",ta,f(i.marketplace.content.number),1)],8,Xs)])])):h("",!0),!i.profile.is_impersonating&&i.profile.subscription?(r(),l("div",na,[a("div",ia,f(i.profile.subscription.title),1),a("a",{class:"border rounded-lg flex justify-center items-center hover:shadow-md",href:i.profile.urls.subscription},[a("div",aa,[a("img",{class:"w-16 h-16",src:i.profile.subscription.image,alt:i.profile.subscription.tier},null,8,oa)]),a("div",ra,[a("div",la,f(i.profile.subscription.tier),1),i.profile.subscription.tier!=="Kobold"?(r(),l("div",ca,[b(f(i.profile.subscription.created),1),da,b(" "+f(i.profile.subscription.boosters),1)])):(r(),l("div",ua,[b(f(i.profile.subscription.call_to_action)+" ",1),a("div",fa,[b(f(i.profile.subscription.call_to_action_2)+" ",1),ha,ma])]))])],8,sa)])):h("",!0),i.profile.is_impersonating?(r(),l("ul",ka,[a("li",null,[a("a",{href:i.profile.return.url,class:""},[Ca,b(" "+f(i.profile.return.name),1)],8,$a)])])):(r(),l("ul",pa,[a("li",null,[a("a",{href:i.profile.urls.settings.url,class:"p-2 block"},[va,b(" "+f(i.profile.urls.settings.name),1)],8,ga)]),a("li",null,[a("a",{href:i.profile.urls.profile.url,class:"p-2 block"},[ya,b(" "+f(i.profile.urls.profile.name),1)],8,_a)]),a("li",null,[a("a",{href:i.profile.urls.help.url,class:"p-2 block",target:"_blank"},[ba,b(" "+f(i.profile.urls.help.name),1)],8,wa)]),a("li",null,[a("a",{href:"#",onClick:t[4]||(t[4]=p=>o.logout()),class:"p-2 block"},[xa,b(" "+f(i.profile.urls.logout.name),1)])])]))])):(r(),l("div",Sa,[i.profile.is_impersonating?h("",!0):(r(),l("div",Ta,[a("div",La,[a("div",ja,[a("div",Da,f(i.campaigns.texts.campaigns),1),i.campaigns.member.length>0?(r(),l("div",qa,[a("a",{href:i.campaigns.urls.reorder},f(i.campaigns.texts.reorder),9,Ea)])):h("",!0)]),a("div",Ma,[(r(!0),l(v,null,w(i.campaigns.member,p=>(r(),T(u,{campaign:p},null,8,["campaign"]))),256)),a("a",{href:i.campaigns.urls.new,class:"new-campaign flex items-center text-center border-dashed border rounded-lg h-24 p-2 overflow-hidden"},[a("span",Ia,[Pa,b(" "+f(i.campaigns.texts.new),1)])],8,Aa)])]),i.profile.is_impersonating?h("",!0):(r(),l("hr",Qa)),a("div",Ha,[i.profile.is_impersonating?h("",!0):(r(),l("p",za,f(i.campaigns.texts.followed),1)),i.profile.is_impersonating?h("",!0):(r(),l("div",Fa,[(r(!0),l(v,null,w(i.campaigns.following,p=>(r(),T(u,{campaign:p},null,8,["campaign"]))),256)),a("a",{href:i.campaigns.urls.follow,class:"new-campaign flex items-center text-center border-dashed border rounded-lg h-24 p-2 overflow-hidden"},[a("span",Ra,f(i.campaigns.texts.follow),1)],8,Na)]))])]))]))]))])),[[_,o.onClickOutside]]):h("",!0)],64)}const Oa=S(os,[["render",Ba]]),Ka=at(),Q=st({});Q.config.globalProperties.emitter=Ka;Q.component("nav-toggler",nn);Q.component("nav-search",vi);Q.component("nav-switcher",Oa);Q.mount("#header");const Y=Array(),Ye=()=>{document.querySelectorAll('[data-toggle="tooltip-ajax"]').forEach(t=>{t.dataset.loaded!=="1"&&(t.dataset.loaded="1",U(t,{theme:"kanka",placement:t.dataset.direction??"bottom",allowHTML:!0,interactive:!0,delay:500,appendTo:t.dataset.append??document.body,content:'