plutonium 0.62.2 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.claude/skills/plutonium/SKILL.md +44 -0
- data/.claude/skills/plutonium-app/SKILL.md +3 -3
- data/.claude/skills/plutonium-async-interactions/SKILL.md +191 -0
- data/.claude/skills/plutonium-auth/SKILL.md +36 -0
- data/.claude/skills/plutonium-behavior/SKILL.md +121 -24
- data/.claude/skills/plutonium-kanban/SKILL.md +17 -3
- data/.claude/skills/plutonium-resource/SKILL.md +259 -12
- data/.claude/skills/plutonium-tenancy/SKILL.md +32 -3
- data/.claude/skills/plutonium-ui/SKILL.md +115 -14
- data/.claude/skills/plutonium-wizard/SKILL.md +73 -4
- data/.standard.yml +1 -1
- data/CHANGELOG.md +73 -0
- data/CLAUDE.md +87 -0
- data/Rakefile +34 -0
- data/SECURITY.md +1 -1
- data/app/assets/plutonium.css +1 -1
- data/app/assets/plutonium.js +685 -102
- data/app/assets/plutonium.js.map +4 -4
- data/app/assets/plutonium.min.js +53 -53
- data/app/assets/plutonium.min.js.map +4 -4
- data/app/views/rodauth/_login_form.html.erb +13 -0
- data/db/migrate/async_interactions/20260817000001_create_plutonium_async_runs.rb +170 -0
- data/docs/.vitepress/config.ts +81 -3
- data/docs/.vitepress/theme/blog.data.ts +44 -0
- data/docs/.vitepress/theme/components/BlogIndex.vue +87 -0
- data/docs/.vitepress/theme/components/BlogMeta.vue +47 -0
- data/docs/.vitepress/theme/components/HomeFeatureTour.vue +293 -0
- data/docs/.vitepress/theme/components/HomeHero.vue +3 -3
- data/docs/.vitepress/theme/components/HomeInTheBox.vue +8 -0
- data/docs/.vitepress/theme/components/HomeStopWriting.vue +1 -0
- data/docs/.vitepress/theme/components/HomeWhyPlutonium.vue +84 -0
- data/docs/.vitepress/theme/index.ts +8 -4
- data/docs/blog/association-inputs-post-signed-ids.md +70 -0
- data/docs/blog/fix-the-model-not-the-policy.md +122 -0
- data/docs/blog/fractional-ordering-runs-out-of-room.md +67 -0
- data/docs/blog/half-finished-forms-are-pii.md +76 -0
- data/docs/blog/index.md +13 -0
- data/docs/blog/interactions-are-presentation-objects.md +152 -0
- data/docs/blog/introducing-plutonium.md +253 -0
- data/docs/blog/jobs-are-not-permission-snapshots.md +100 -0
- data/docs/blog/plutonium-and-ai-agents.md +48 -0
- data/docs/blog/realtime-is-one-line-and-four-dependencies.md +70 -0
- data/docs/blog/two-forms-one-dom-id.md +69 -0
- data/docs/blog/whats-new-async-kanban-wizards.md +130 -0
- data/docs/getting-started/tutorial/04-authorization.md +12 -3
- data/docs/getting-started/tutorial/06-nested-resources.md +3 -1
- data/docs/getting-started/tutorial/07-author-portal.md +2 -2
- data/docs/guides/authentication.md +73 -0
- data/docs/guides/authorization.md +2 -0
- data/docs/guides/creating-packages.md +5 -3
- data/docs/guides/custom-actions.md +74 -12
- data/docs/guides/customizing-ui.md +9 -2
- data/docs/guides/index.md +1 -0
- data/docs/guides/kanban.md +7 -5
- data/docs/guides/nested-resources.md +11 -1
- data/docs/guides/performance.md +104 -0
- data/docs/guides/user-invites.md +1 -1
- data/docs/guides/wizards.md +9 -1
- data/docs/index.md +3 -3
- data/docs/public/images/home/tour-actions.png +0 -0
- data/docs/public/images/home/tour-async.png +0 -0
- data/docs/public/images/home/tour-kanban.png +0 -0
- data/docs/public/images/home/tour-tenancy.png +0 -0
- data/docs/public/images/home/tour-wizard.png +0 -0
- data/docs/public/images/reference/async-progress-page.png +0 -0
- data/docs/public/images/reference/async-running-banner.png +0 -0
- data/docs/public/templates/experimental.rb +34 -0
- data/docs/public/templates/pluton8.rb +14 -0
- data/docs/reference/app/portals.md +15 -3
- data/docs/reference/auth/accounts.md +19 -0
- data/docs/reference/behavior/async-interactions.md +295 -0
- data/docs/reference/behavior/controllers.md +17 -4
- data/docs/reference/behavior/index.md +7 -1
- data/docs/reference/behavior/interactions.md +152 -22
- data/docs/reference/configuration.md +5 -0
- data/docs/reference/index.md +1 -0
- data/docs/reference/kanban/dsl.md +7 -4
- data/docs/reference/kanban/index.md +1 -1
- data/docs/reference/kanban/positioning.md +26 -4
- data/docs/reference/positioning.md +568 -0
- data/docs/reference/resource/actions.md +97 -4
- data/docs/reference/resource/definition.md +181 -9
- data/docs/reference/tenancy/invites.md +1 -1
- data/docs/reference/tenancy/nested-resources.md +60 -2
- data/docs/reference/ui/assets.md +4 -0
- data/docs/reference/ui/components.md +57 -4
- data/docs/reference/ui/displays.md +20 -10
- data/docs/reference/ui/index.md +1 -1
- data/docs/reference/wizard/dsl.md +33 -0
- data/docs/reference/wizard/storage-config.md +1 -0
- data/docs/superpowers/plans/2026-07-16-homepage-depth-upgrade.md +624 -0
- data/docs/superpowers/plans/2026-07-16-homepage-depth-upgrade.md.tasks.json +32 -0
- data/docs/superpowers/plans/2026-07-31-positioned-drag-and-drop.md +1787 -0
- data/docs/superpowers/plans/2026-07-31-positioned-drag-and-drop.md.tasks.json +91 -0
- data/docs/superpowers/plans/2026-08-17-async-interactions.md +1414 -0
- data/docs/superpowers/plans/2026-08-17-async-interactions.md.tasks.json +66 -0
- data/docs/superpowers/specs/2026-07-16-homepage-depth-upgrade-design.md +111 -0
- data/docs/superpowers/specs/2026-07-17-action-html-attributes-design.md +124 -0
- data/docs/superpowers/specs/2026-07-31-positioned-drag-and-drop-design.md +506 -0
- data/docs/superpowers/specs/2026-08-17-async-interactions-design.md +185 -0
- data/gemfiles/postgres.gemfile.lock +85 -85
- data/gemfiles/rails_7.gemfile.lock +323 -141
- data/gemfiles/rails_8.0.gemfile.lock +126 -116
- data/gemfiles/rails_8.1.gemfile.lock +127 -117
- data/lib/generators/pu/async_interactions/install_generator.rb +111 -0
- data/lib/generators/pu/async_interactions/templates/app/controllers/async_runs_controller.rb.tt +15 -0
- data/lib/generators/pu/core/typespec/typespec_generator.rb +7 -4
- data/lib/generators/pu/invites/install_generator.rb +3 -3
- data/lib/generators/pu/invites/templates/packages/invites/app/views/layouts/invites/invitation.html.erb.tt +2 -2
- data/lib/generators/pu/lib/plutonium_generators/concerns/mounts_engines.rb +47 -2
- data/lib/generators/pu/lib/plutonium_generators/concerns/resource_registration.rb +41 -0
- data/lib/generators/pu/lite/litestream/litestream_generator.rb +1 -1
- data/lib/generators/pu/lite/solid_queue/solid_queue_generator.rb +1 -1
- data/lib/generators/pu/res/conn/conn_generator.rb +19 -39
- data/lib/generators/pu/res/conn/templates/app/controllers/resource_controller.rb.tt +4 -0
- data/lib/generators/pu/rodauth/templates/app/rodauth/account_rodauth_plugin.rb.tt +15 -6
- data/lib/generators/pu/rodauth/templates/app/rodauth/rodauth_plugin.rb.tt +7 -0
- data/lib/generators/pu/saas/welcome/templates/app/views/layouts/welcome.html.erb.tt +2 -2
- data/lib/generators/pu/wizards/install_generator.rb +78 -0
- data/lib/plutonium/action/base.rb +71 -9
- data/lib/plutonium/action/interactive.rb +9 -0
- data/lib/plutonium/attachments.rb +254 -0
- data/lib/plutonium/configuration.rb +82 -1
- data/lib/plutonium/core/controller.rb +50 -7
- data/lib/plutonium/core/controllers/authorizable.rb +16 -0
- data/lib/plutonium/core/controllers/entity_scoping.rb +12 -2
- data/lib/plutonium/definition/base.rb +51 -0
- data/lib/plutonium/definition/display_layout.rb +112 -0
- data/lib/plutonium/definition/index_views.rb +8 -7
- data/lib/plutonium/definition/input_aliases.rb +38 -0
- data/lib/plutonium/definition/page_widths.rb +65 -0
- data/lib/plutonium/definition/positioning.rb +126 -0
- data/lib/plutonium/definition/sorting.rb +17 -2
- data/lib/plutonium/helpers/turbo_helper.rb +7 -0
- data/lib/plutonium/interaction/README.md +61 -24
- data/lib/plutonium/interaction/async/configuration.rb +38 -0
- data/lib/plutonium/interaction/async/context.rb +419 -0
- data/lib/plutonium/interaction/async/executor.rb +422 -0
- data/lib/plutonium/interaction/async/job.rb +80 -0
- data/lib/plutonium/interaction/async/reap_job.rb +81 -0
- data/lib/plutonium/interaction/async/run.rb +394 -0
- data/lib/plutonium/interaction/async/run_definition.rb +155 -0
- data/lib/plutonium/interaction/async/run_policy.rb +86 -0
- data/lib/plutonium/interaction/base.rb +34 -7
- data/lib/plutonium/interaction/concerns/dispatchable.rb +518 -0
- data/lib/plutonium/interaction/concerns/scoping.rb +70 -9
- data/lib/plutonium/interaction/response/redirect.rb +11 -3
- data/lib/plutonium/kanban/board.rb +14 -0
- data/lib/plutonium/kanban/column.rb +4 -2
- data/lib/plutonium/kanban/dsl.rb +4 -1
- data/lib/plutonium/kanban/grouping.rb +9 -22
- data/lib/plutonium/kanban/positioning.rb +5 -65
- data/lib/plutonium/positioning/config.rb +94 -0
- data/lib/plutonium/positioning/model.rb +128 -0
- data/lib/plutonium/positioning.rb +25 -86
- data/lib/plutonium/railtie.rb +1 -0
- data/lib/plutonium/resource/controller.rb +118 -38
- data/lib/plutonium/resource/controllers/crud_actions/index_action.rb +32 -2
- data/lib/plutonium/resource/controllers/crud_actions.rb +30 -2
- data/lib/plutonium/resource/controllers/eager_loading.rb +87 -0
- data/lib/plutonium/resource/controllers/export_csv.rb +10 -1
- data/lib/plutonium/resource/controllers/kanban_actions.rb +53 -14
- data/lib/plutonium/resource/controllers/position_actions.rb +390 -0
- data/lib/plutonium/resource/controllers/presentable.rb +19 -13
- data/lib/plutonium/resource/controllers/queryable.rb +5 -1
- data/lib/plutonium/resource/controllers/wizard_actions.rb +21 -0
- data/lib/plutonium/resource/policy.rb +33 -0
- data/lib/plutonium/resource/query_object.rb +36 -0
- data/lib/plutonium/routing/mapper_extensions.rb +100 -8
- data/lib/plutonium/routing/route_set_extensions.rb +15 -1
- data/lib/plutonium/routing/wizard_registration.rb +4 -0
- data/lib/plutonium/testing/resource_policy.rb +6 -2
- data/lib/plutonium/ui/action_button.rb +12 -7
- data/lib/plutonium/ui/actions_dropdown.rb +1 -1
- data/lib/plutonium/ui/block.rb +21 -1
- data/lib/plutonium/ui/breadcrumbs.rb +187 -55
- data/lib/plutonium/ui/component/methods.rb +5 -0
- data/lib/plutonium/ui/component/positionable.rb +112 -0
- data/lib/plutonium/ui/component/resolves_tags.rb +57 -0
- data/lib/plutonium/ui/component/section.rb +185 -0
- data/lib/plutonium/ui/display/base.rb +13 -1
- data/lib/plutonium/ui/display/components/formatted_value.rb +26 -0
- data/lib/plutonium/ui/display/components/section.rb +18 -0
- data/lib/plutonium/ui/display/resource.rb +141 -22
- data/lib/plutonium/ui/display/theme.rb +20 -1
- data/lib/plutonium/ui/export_button.rb +1 -1
- data/lib/plutonium/ui/form/base.rb +8 -7
- data/lib/plutonium/ui/form/components/intl_tel_input.rb +1 -1
- data/lib/plutonium/ui/form/components/section.rb +7 -62
- data/lib/plutonium/ui/form/components/uppy.rb +12 -1
- data/lib/plutonium/ui/form/concerns/renders_nested_resource_fields.rb +16 -3
- data/lib/plutonium/ui/form/concerns/renders_structured_inputs.rb +5 -1
- data/lib/plutonium/ui/form/query.rb +2 -4
- data/lib/plutonium/ui/form/resource.rb +92 -15
- data/lib/plutonium/ui/form/theme.rb +17 -0
- data/lib/plutonium/ui/form/wizard.rb +25 -1
- data/lib/plutonium/ui/grid/card.rb +79 -11
- data/lib/plutonium/ui/grid/resource.rb +47 -5
- data/lib/plutonium/ui/interaction/async/run_progress.rb +227 -0
- data/lib/plutonium/ui/interaction/async/running_banner.rb +65 -0
- data/lib/plutonium/ui/kanban/card.rb +2 -1
- data/lib/plutonium/ui/kanban/column.rb +12 -6
- data/lib/plutonium/ui/kanban/resource.rb +6 -7
- data/lib/plutonium/ui/layout/base.rb +10 -3
- data/lib/plutonium/ui/nav_grid_menu.rb +1 -0
- data/lib/plutonium/ui/page/base.rb +19 -0
- data/lib/plutonium/ui/page/edit.rb +4 -1
- data/lib/plutonium/ui/page/index.rb +69 -18
- data/lib/plutonium/ui/page/interactive_action.rb +5 -1
- data/lib/plutonium/ui/page/new.rb +4 -1
- data/lib/plutonium/ui/page/show.rb +27 -10
- data/lib/plutonium/ui/page/wizard.rb +10 -1
- data/lib/plutonium/ui/page/wizard_chooser.rb +36 -11
- data/lib/plutonium/ui/page_width.rb +58 -0
- data/lib/plutonium/ui/table/base.rb +34 -1
- data/lib/plutonium/ui/table/components/attachment.rb +1 -1
- data/lib/plutonium/ui/table/components/bulk_actions_toolbar.rb +32 -8
- data/lib/plutonium/ui/table/components/drag_handle.rb +120 -0
- data/lib/plutonium/ui/table/components/filter_form.rb +1 -4
- data/lib/plutonium/ui/table/components/filter_pills.rb +1 -1
- data/lib/plutonium/ui/table/components/row_actions_dropdown.rb +1 -1
- data/lib/plutonium/ui/table/resource.rb +50 -5
- data/lib/plutonium/ui/table/theme.rb +59 -2
- data/lib/plutonium/ui/wizard/review.rb +4 -2
- data/lib/plutonium/ui/wizard/summary_display.rb +42 -14
- data/lib/plutonium/version.rb +1 -1
- data/lib/plutonium/wizard/attachments.rb +32 -197
- data/lib/plutonium/wizard/base.rb +6 -1
- data/lib/plutonium/wizard/configuration.rb +12 -0
- data/lib/plutonium/wizard/controller.rb +14 -0
- data/lib/plutonium/wizard/driving.rb +99 -15
- data/lib/plutonium/wizard/dsl.rb +23 -0
- data/lib/plutonium/wizard/resume.rb +127 -49
- data/lib/plutonium/wizard/runner.rb +46 -2
- data/lib/plutonium/wizard/step_adapter.rb +1 -1
- data/lib/plutonium/wizard/sweep_job.rb +16 -0
- data/lib/plutonium.rb +21 -0
- data/lib/rodauth/features/session_isolation.rb +92 -0
- data/lib/rodauth/plugins.rb +1 -0
- data/package.json +2 -1
- data/plutonium.gemspec +20 -20
- data/src/css/components.css +89 -1
- data/src/css/slim_select.css +20 -0
- data/src/js/controllers/breadcrumbs_controller.js +112 -0
- data/src/js/controllers/bulk_actions_controller.js +10 -2
- data/src/js/controllers/kanban_controller.js +30 -21
- data/src/js/controllers/positioned_controller.js +452 -0
- data/src/js/controllers/register_controllers.js +6 -0
- data/src/js/controllers/resource_drop_down_controller.js +5 -0
- data/src/js/controllers/run_progress_controller.js +73 -0
- data/src/js/drag/sortable.js +186 -0
- data/yarn.lock +108 -63
- metadata +101 -22
- data/docs/.vitepress/theme/components/HomeAudienceSplit.vue +0 -53
- data/docs/.vitepress/theme/components/HomePillars.vue +0 -42
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// Shared native HTML5 drag-and-drop mechanics.
|
|
2
|
+
//
|
|
3
|
+
// Deliberately knows nothing about kanban columns, tables, WIP limits, or
|
|
4
|
+
// Turbo. Consumers wire it to their own DOM contract and own the transport
|
|
5
|
+
// (which element is draggable, what a "drop" means, what gets POSTed where).
|
|
6
|
+
//
|
|
7
|
+
// Everything here is a pure function over an event / element / geometry — no
|
|
8
|
+
// module state, so two controllers can be live on the same page without
|
|
9
|
+
// interfering.
|
|
10
|
+
//
|
|
11
|
+
// Consumers: kanban_controller.js, positioned_controller.js
|
|
12
|
+
|
|
13
|
+
// Returns the 0-based insertion index for a drop at `clientY` among `items`,
|
|
14
|
+
// by comparing the cursor against each item's vertical midpoint: the drop goes
|
|
15
|
+
// BEFORE the first item whose midpoint is below the cursor, or after all of
|
|
16
|
+
// them when the cursor is below every midpoint.
|
|
17
|
+
//
|
|
18
|
+
// `items` must already exclude the dragged element itself — otherwise a
|
|
19
|
+
// same-container reorder computes an index that counts the item being moved.
|
|
20
|
+
export function computeDropIndex(clientY, items) {
|
|
21
|
+
for (let i = 0; i < items.length; i++) {
|
|
22
|
+
const rect = items[i].getBoundingClientRect()
|
|
23
|
+
if (clientY < rect.top + rect.height / 2) return i
|
|
24
|
+
}
|
|
25
|
+
return items.length
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Horizontal variant of the above, for grid / card layouts that flow in rows
|
|
29
|
+
// rather than stacking in a column.
|
|
30
|
+
//
|
|
31
|
+
// Scoped to ONE visual row. A wrapped grid gives every row the same left edge,
|
|
32
|
+
// so an X comparison across rows is meaningless — the caller narrows to a row
|
|
33
|
+
// first and passes only that row's items (see positioned_controller's
|
|
34
|
+
// #dropIndex, which does exactly that).
|
|
35
|
+
export function computeDropIndexHorizontal(clientX, items) {
|
|
36
|
+
for (let i = 0; i < items.length; i++) {
|
|
37
|
+
const rect = items[i].getBoundingClientRect()
|
|
38
|
+
if (clientX < rect.left + rect.width / 2) return i
|
|
39
|
+
}
|
|
40
|
+
return items.length
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Applies the drag payload + the dragging class to `element`.
|
|
44
|
+
//
|
|
45
|
+
// The class change is deferred one frame ON PURPOSE: the browser captures the
|
|
46
|
+
// drag ghost image from the element's rendered state during dragstart, so
|
|
47
|
+
// adding an opacity class synchronously produces an already-faded ghost. One
|
|
48
|
+
// requestAnimationFrame is enough for the ghost to be snapshotted first and the
|
|
49
|
+
// source element to then dim in place.
|
|
50
|
+
//
|
|
51
|
+
// `payload` is written to text/plain so a drop OUTSIDE the consumer's own
|
|
52
|
+
// container still carries data natively instead of erroring.
|
|
53
|
+
// `dragImage` names the element the browser should ghost. Pass it whenever the
|
|
54
|
+
// draggable node is a HANDLE inside the thing being moved rather than the thing
|
|
55
|
+
// itself: the browser ghosts whatever carries draggable="true", so a table's
|
|
56
|
+
// grip button drags a picture of the grip and the row appears not to move at
|
|
57
|
+
// all. Consumers whose whole element is draggable (a kanban card) can omit it —
|
|
58
|
+
// the default ghost is already the right picture.
|
|
59
|
+
export function beginDrag(event, element, { draggingClass, payload, dragImage = null }) {
|
|
60
|
+
event.dataTransfer.effectAllowed = "move"
|
|
61
|
+
event.dataTransfer.setData("text/plain", payload)
|
|
62
|
+
|
|
63
|
+
if (dragImage) {
|
|
64
|
+
// Anchor the ghost where the pointer actually grabbed, so it tracks under
|
|
65
|
+
// the cursor instead of snapping its corner to it.
|
|
66
|
+
const rect = dragImage.getBoundingClientRect()
|
|
67
|
+
event.dataTransfer.setDragImage(dragImage, event.clientX - rect.left, event.clientY - rect.top)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
requestAnimationFrame(() => element.classList.add(draggingClass))
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Undoes beginDrag's visual half. Callers own the rest of their teardown
|
|
74
|
+
// (highlights, hints, cached references) — this only knows about the class it
|
|
75
|
+
// added, plus the insertion marker, which no caller should have to remember to
|
|
76
|
+
// clean up separately.
|
|
77
|
+
export function endDrag(element, { draggingClass }) {
|
|
78
|
+
element.classList.remove(draggingClass)
|
|
79
|
+
hideInsertionMarker()
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ─── insertion marker ────────────────────────────────────────────────────────
|
|
83
|
+
//
|
|
84
|
+
// A line showing WHERE the drop will land. Without it the only feedback during
|
|
85
|
+
// a drag is the ghost following the cursor, which says what you are moving but
|
|
86
|
+
// never where it will end up — the user is guessing until they release.
|
|
87
|
+
//
|
|
88
|
+
// One marker element, created lazily and reused, parked on <body> and
|
|
89
|
+
// positioned in viewport coordinates (position: fixed). Deliberately NOT
|
|
90
|
+
// inserted between the items it points at: a table would need a full-width
|
|
91
|
+
// placeholder <tr> to sit between rows, and mutating the collection's own DOM
|
|
92
|
+
// mid-drag fights the Turbo stream that replaces it on drop.
|
|
93
|
+
|
|
94
|
+
const MARKER_ID = "pu-drag-insertion-marker"
|
|
95
|
+
|
|
96
|
+
function insertionMarker() {
|
|
97
|
+
let marker = document.getElementById(MARKER_ID)
|
|
98
|
+
if (!marker) {
|
|
99
|
+
marker = document.createElement("div")
|
|
100
|
+
marker.id = MARKER_ID
|
|
101
|
+
marker.className = "pu-drag-marker"
|
|
102
|
+
// Decorative: it duplicates information the drag itself conveys, and a
|
|
103
|
+
// live region announcing every dragover would flood a screen reader.
|
|
104
|
+
marker.setAttribute("aria-hidden", "true")
|
|
105
|
+
document.body.appendChild(marker)
|
|
106
|
+
}
|
|
107
|
+
return marker
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Draws the marker at insertion point `index` within `items` — the same index
|
|
111
|
+
// computeDropIndex/computeDropIndexHorizontal return, so the line always agrees
|
|
112
|
+
// with where the drop actually goes.
|
|
113
|
+
//
|
|
114
|
+
// `items` must exclude the dragged element, exactly as it does for the index
|
|
115
|
+
// computation. `axis` is "vertical" for stacked rows/cards (a horizontal rule
|
|
116
|
+
// between them) and "horizontal" for grids (a vertical rule between cards).
|
|
117
|
+
// `container` is the fallback for an empty target — an empty kanban column
|
|
118
|
+
// still needs to say "it lands here".
|
|
119
|
+
// BETWEEN two items the line is centred in the gap the layout already leaves,
|
|
120
|
+
// so it gets equal air on both sides whatever that spacing is — a board's roomy
|
|
121
|
+
// column and a table's tight rows both come out balanced with no per-consumer
|
|
122
|
+
// tuning. `gap` only covers the two ENDS, where there is no facing item to
|
|
123
|
+
// measure against and the clearance has to be invented. One marker element is
|
|
124
|
+
// shared by every consumer, so an unset gap must RESET the property rather than
|
|
125
|
+
// inherit whichever consumer drew last.
|
|
126
|
+
export function showInsertionMarker(items, index, { axis = "vertical", container = null, gap = null } = {}) {
|
|
127
|
+
const marker = insertionMarker()
|
|
128
|
+
|
|
129
|
+
if (gap) {
|
|
130
|
+
marker.style.setProperty("--pu-drag-marker-gap", gap)
|
|
131
|
+
} else {
|
|
132
|
+
marker.style.removeProperty("--pu-drag-marker-gap")
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const vertical = axis !== "horizontal"
|
|
136
|
+
const near = rect => (vertical ? rect.top : rect.left)
|
|
137
|
+
const far = rect => (vertical ? rect.bottom : rect.right)
|
|
138
|
+
|
|
139
|
+
// `span` supplies the cross-axis extent (a row's width, a card's height);
|
|
140
|
+
// `offset` is where the line sits along the drag axis.
|
|
141
|
+
let span
|
|
142
|
+
let offset
|
|
143
|
+
let edge
|
|
144
|
+
if (items.length === 0) {
|
|
145
|
+
if (!container) return hideInsertionMarker()
|
|
146
|
+
span = container.getBoundingClientRect()
|
|
147
|
+
offset = near(span)
|
|
148
|
+
edge = "leading"
|
|
149
|
+
} else if (index <= 0) {
|
|
150
|
+
span = items[0].getBoundingClientRect()
|
|
151
|
+
offset = near(span)
|
|
152
|
+
edge = "leading"
|
|
153
|
+
} else if (index >= items.length) {
|
|
154
|
+
span = items[items.length - 1].getBoundingClientRect()
|
|
155
|
+
offset = far(span)
|
|
156
|
+
edge = "trailing"
|
|
157
|
+
} else {
|
|
158
|
+
span = items[index].getBoundingClientRect()
|
|
159
|
+
offset = (far(items[index - 1].getBoundingClientRect()) + near(span)) / 2
|
|
160
|
+
edge = "between"
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (vertical) {
|
|
164
|
+
marker.style.left = `${span.left}px`
|
|
165
|
+
marker.style.top = `${offset}px`
|
|
166
|
+
marker.style.width = `${span.width}px`
|
|
167
|
+
marker.style.height = ""
|
|
168
|
+
} else {
|
|
169
|
+
marker.style.left = `${offset}px`
|
|
170
|
+
marker.style.top = `${span.top}px`
|
|
171
|
+
marker.style.height = `${span.height}px`
|
|
172
|
+
marker.style.width = ""
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
marker.dataset.axis = axis
|
|
176
|
+
// Which edge the line is anchored to. "between" is already centred in a real
|
|
177
|
+
// gap and only needs the line's own thickness taken off; the ends have to be
|
|
178
|
+
// pushed clear of the single item they touch.
|
|
179
|
+
marker.dataset.edge = edge
|
|
180
|
+
marker.style.display = "block"
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export function hideInsertionMarker() {
|
|
184
|
+
const marker = document.getElementById(MARKER_ID)
|
|
185
|
+
if (marker) marker.style.display = "none"
|
|
186
|
+
}
|
data/yarn.lock
CHANGED
|
@@ -268,14 +268,14 @@ __metadata:
|
|
|
268
268
|
languageName: node
|
|
269
269
|
linkType: hard
|
|
270
270
|
|
|
271
|
-
"@braintree/sanitize-url@npm:^7.1.
|
|
272
|
-
version: 7.1.
|
|
273
|
-
resolution: "@braintree/sanitize-url@npm:7.1.
|
|
274
|
-
checksum: 10c0/
|
|
271
|
+
"@braintree/sanitize-url@npm:^7.1.2":
|
|
272
|
+
version: 7.1.2
|
|
273
|
+
resolution: "@braintree/sanitize-url@npm:7.1.2"
|
|
274
|
+
checksum: 10c0/62f2aa0cf58626e3880b2dc1025c42064b4639abd157ae4e1c35f4c2f5031e9273772046a423979845069c814e27ff818e8e669280dc53585e6f033d5b7a59cb
|
|
275
275
|
languageName: node
|
|
276
276
|
linkType: hard
|
|
277
277
|
|
|
278
|
-
"@chevrotain/types@npm:~11.1.
|
|
278
|
+
"@chevrotain/types@npm:~11.1.2":
|
|
279
279
|
version: 11.1.2
|
|
280
280
|
resolution: "@chevrotain/types@npm:11.1.2"
|
|
281
281
|
checksum: 10c0/c0c4679a3d407df34e18d5adfa7ac599b4a2bfddbf68da6e43678b9b3e16ab911de7766b37b9fc466261c3dead3db1b620e2e344f800fa9f0f381720475eda8f
|
|
@@ -812,12 +812,12 @@ __metadata:
|
|
|
812
812
|
languageName: node
|
|
813
813
|
linkType: hard
|
|
814
814
|
|
|
815
|
-
"@mermaid-js/parser@npm:^1.
|
|
816
|
-
version: 1.
|
|
817
|
-
resolution: "@mermaid-js/parser@npm:1.
|
|
815
|
+
"@mermaid-js/parser@npm:^1.2.1":
|
|
816
|
+
version: 1.2.1
|
|
817
|
+
resolution: "@mermaid-js/parser@npm:1.2.1"
|
|
818
818
|
dependencies:
|
|
819
|
-
"@chevrotain/types": "npm:~11.1.
|
|
820
|
-
checksum: 10c0/
|
|
819
|
+
"@chevrotain/types": "npm:~11.1.2"
|
|
820
|
+
checksum: 10c0/a28e72f874670accb15e057b1802ac917f5d80d3e9b4be9a5094833ee0239d1290ff31c2d50236e909cbd42bea4550c7872d2bfcec0bc0588df6e34ba5dc0498
|
|
821
821
|
languageName: node
|
|
822
822
|
linkType: hard
|
|
823
823
|
|
|
@@ -891,6 +891,7 @@ __metadata:
|
|
|
891
891
|
dompurify: "npm:^3.4.11"
|
|
892
892
|
esbuild: "npm:^0.28.1"
|
|
893
893
|
esbuild-plugin-manifest: "npm:^1.0.3"
|
|
894
|
+
feed: "npm:^6.0.0"
|
|
894
895
|
flowbite-typography: "npm:^1.0.5"
|
|
895
896
|
lodash.debounce: "npm:^4.0.8"
|
|
896
897
|
marked: "npm:^15.0.3"
|
|
@@ -2791,10 +2792,10 @@ __metadata:
|
|
|
2791
2792
|
languageName: node
|
|
2792
2793
|
linkType: hard
|
|
2793
2794
|
|
|
2794
|
-
"cytoscape@npm:^3.
|
|
2795
|
-
version: 3.
|
|
2796
|
-
resolution: "cytoscape@npm:3.
|
|
2797
|
-
checksum: 10c0/
|
|
2795
|
+
"cytoscape@npm:^3.34.0":
|
|
2796
|
+
version: 3.34.1
|
|
2797
|
+
resolution: "cytoscape@npm:3.34.1"
|
|
2798
|
+
checksum: 10c0/1fefc274d8fbbb59273606d71e7875bfe6d7b7f3cafbd5af0083b1b19a431af93440c7273c0896ce5002ccdd54e28cfa4b0d54638017c69ebba0c1860a1c282b
|
|
2798
2799
|
languageName: node
|
|
2799
2800
|
linkType: hard
|
|
2800
2801
|
|
|
@@ -3170,10 +3171,10 @@ __metadata:
|
|
|
3170
3171
|
languageName: node
|
|
3171
3172
|
linkType: hard
|
|
3172
3173
|
|
|
3173
|
-
"dayjs@npm:^1.11.
|
|
3174
|
-
version: 1.11.
|
|
3175
|
-
resolution: "dayjs@npm:1.11.
|
|
3176
|
-
checksum: 10c0/
|
|
3174
|
+
"dayjs@npm:^1.11.21":
|
|
3175
|
+
version: 1.11.23
|
|
3176
|
+
resolution: "dayjs@npm:1.11.23"
|
|
3177
|
+
checksum: 10c0/69ab04bf19c676e44ab50cc2fca223d265f3dafd107151ef3b0f3ad74d360c37caa602abe62f87cb25d90bd9f6bee003698af47df5b0dbf10a998b7b5f3bb3f1
|
|
3177
3178
|
languageName: node
|
|
3178
3179
|
linkType: hard
|
|
3179
3180
|
|
|
@@ -3271,15 +3272,15 @@ __metadata:
|
|
|
3271
3272
|
languageName: node
|
|
3272
3273
|
linkType: hard
|
|
3273
3274
|
|
|
3274
|
-
"dompurify@npm:^3.3.
|
|
3275
|
-
version: 3.4.
|
|
3276
|
-
resolution: "dompurify@npm:3.4.
|
|
3275
|
+
"dompurify@npm:^3.3.3, dompurify@npm:^3.4.11":
|
|
3276
|
+
version: 3.4.14
|
|
3277
|
+
resolution: "dompurify@npm:3.4.14"
|
|
3277
3278
|
dependencies:
|
|
3278
3279
|
"@types/trusted-types": "npm:^2.0.7"
|
|
3279
3280
|
dependenciesMeta:
|
|
3280
3281
|
"@types/trusted-types":
|
|
3281
3282
|
optional: true
|
|
3282
|
-
checksum: 10c0/
|
|
3283
|
+
checksum: 10c0/feca07ece3805d1d4e33e847c11196888dcdc97b2afe0bb8a2fd11de4e62bfdc434c2403ee3fb3c7771e903325041d062febec6c5518796391fdc0419a90a873
|
|
3283
3284
|
languageName: node
|
|
3284
3285
|
linkType: hard
|
|
3285
3286
|
|
|
@@ -3613,6 +3614,15 @@ __metadata:
|
|
|
3613
3614
|
languageName: node
|
|
3614
3615
|
linkType: hard
|
|
3615
3616
|
|
|
3617
|
+
"fastdom@npm:1.0.12":
|
|
3618
|
+
version: 1.0.12
|
|
3619
|
+
resolution: "fastdom@npm:1.0.12"
|
|
3620
|
+
dependencies:
|
|
3621
|
+
strictdom: "npm:^1.0.1"
|
|
3622
|
+
checksum: 10c0/d1727eb5d803aa0e1dc9a98b2eef1f138bad3776fa7471145216dba34f435f86e8e514658d0b1717fa83a987f44a8d26f2353a515f2bf782f32d3c9ead6d1994
|
|
3623
|
+
languageName: node
|
|
3624
|
+
linkType: hard
|
|
3625
|
+
|
|
3616
3626
|
"fault@npm:^2.0.0":
|
|
3617
3627
|
version: 2.0.1
|
|
3618
3628
|
resolution: "fault@npm:2.0.1"
|
|
@@ -3634,6 +3644,15 @@ __metadata:
|
|
|
3634
3644
|
languageName: node
|
|
3635
3645
|
linkType: hard
|
|
3636
3646
|
|
|
3647
|
+
"feed@npm:^6.0.0":
|
|
3648
|
+
version: 6.0.0
|
|
3649
|
+
resolution: "feed@npm:6.0.0"
|
|
3650
|
+
dependencies:
|
|
3651
|
+
xml-js: "npm:^1.6.11"
|
|
3652
|
+
checksum: 10c0/0cfabb62037cc97bb935b778a5d98fae808e27d5842173774c0cd07a276e7e881b5f0dccb0575214938218af9a0cad3039a20b48db966799b72d9fde49048cb5
|
|
3653
|
+
languageName: node
|
|
3654
|
+
linkType: hard
|
|
3655
|
+
|
|
3637
3656
|
"fill-range@npm:^7.1.1":
|
|
3638
3657
|
version: 7.1.1
|
|
3639
3658
|
resolution: "fill-range@npm:7.1.1"
|
|
@@ -3903,9 +3922,9 @@ __metadata:
|
|
|
3903
3922
|
linkType: hard
|
|
3904
3923
|
|
|
3905
3924
|
"ip-address@npm:^10.0.1":
|
|
3906
|
-
version: 10.
|
|
3907
|
-
resolution: "ip-address@npm:10.
|
|
3908
|
-
checksum: 10c0/
|
|
3925
|
+
version: 10.5.0
|
|
3926
|
+
resolution: "ip-address@npm:10.5.0"
|
|
3927
|
+
checksum: 10c0/c6616bc99c90b552dad2beb850ca697c1ea3e2b89662d652a4439cd72a549b0c9af100a54be0d25be86599e2b089db87ef5303157d142e5b4c21bd2a1301dfa7
|
|
3909
3928
|
languageName: node
|
|
3910
3929
|
linkType: hard
|
|
3911
3930
|
|
|
@@ -4009,14 +4028,14 @@ __metadata:
|
|
|
4009
4028
|
linkType: hard
|
|
4010
4029
|
|
|
4011
4030
|
"js-yaml@npm:^3.13.1":
|
|
4012
|
-
version: 3.15.
|
|
4013
|
-
resolution: "js-yaml@npm:3.15.
|
|
4031
|
+
version: 3.15.1
|
|
4032
|
+
resolution: "js-yaml@npm:3.15.1"
|
|
4014
4033
|
dependencies:
|
|
4015
4034
|
argparse: "npm:^1.0.7"
|
|
4016
4035
|
esprima: "npm:^4.0.0"
|
|
4017
4036
|
bin:
|
|
4018
4037
|
js-yaml: bin/js-yaml.js
|
|
4019
|
-
checksum: 10c0/
|
|
4038
|
+
checksum: 10c0/6c693b8c59ffe12021df3b36994b090df19d920826dd810baab81652b40861e1974509dd11fe92225ab4c00cc14de053300c94db015c2c0e211edea39b118737
|
|
4020
4039
|
languageName: node
|
|
4021
4040
|
linkType: hard
|
|
4022
4041
|
|
|
@@ -4033,14 +4052,14 @@ __metadata:
|
|
|
4033
4052
|
languageName: node
|
|
4034
4053
|
linkType: hard
|
|
4035
4054
|
|
|
4036
|
-
"katex@npm:^0.16.
|
|
4037
|
-
version: 0.16.
|
|
4038
|
-
resolution: "katex@npm:0.16.
|
|
4055
|
+
"katex@npm:^0.16.47":
|
|
4056
|
+
version: 0.16.47
|
|
4057
|
+
resolution: "katex@npm:0.16.47"
|
|
4039
4058
|
dependencies:
|
|
4040
4059
|
commander: "npm:^8.3.0"
|
|
4041
4060
|
bin:
|
|
4042
4061
|
katex: cli.js
|
|
4043
|
-
checksum: 10c0/
|
|
4062
|
+
checksum: 10c0/b10f4d0651c60771a48444879e4227255e26e2b2ec061b1ee4b08934863ad2324ba8dbb772455f7768aeb14dfcc13bcd309174a0ddd5ef954a607f644a197710
|
|
4044
4063
|
languageName: node
|
|
4045
4064
|
linkType: hard
|
|
4046
4065
|
|
|
@@ -4200,11 +4219,11 @@ __metadata:
|
|
|
4200
4219
|
linkType: hard
|
|
4201
4220
|
|
|
4202
4221
|
"linkify-it@npm:^5.0.1":
|
|
4203
|
-
version: 5.0.
|
|
4204
|
-
resolution: "linkify-it@npm:5.0.
|
|
4222
|
+
version: 5.0.2
|
|
4223
|
+
resolution: "linkify-it@npm:5.0.2"
|
|
4205
4224
|
dependencies:
|
|
4206
4225
|
uc.micro: "npm:^2.0.0"
|
|
4207
|
-
checksum: 10c0/
|
|
4226
|
+
checksum: 10c0/dd70b1735a13d41a2cff0a058ac3771166038f23f6aff004dd53873cf985c64b107902fe0b544a5b3d1ff6e63249cf9c648fb3ae9f285481db48f56887adb0d6
|
|
4208
4227
|
languageName: node
|
|
4209
4228
|
linkType: hard
|
|
4210
4229
|
|
|
@@ -4488,31 +4507,32 @@ __metadata:
|
|
|
4488
4507
|
linkType: hard
|
|
4489
4508
|
|
|
4490
4509
|
"mermaid@npm:^11.15.0":
|
|
4491
|
-
version: 11.
|
|
4492
|
-
resolution: "mermaid@npm:11.
|
|
4510
|
+
version: 11.17.0
|
|
4511
|
+
resolution: "mermaid@npm:11.17.0"
|
|
4493
4512
|
dependencies:
|
|
4494
|
-
"@braintree/sanitize-url": "npm:^7.1.
|
|
4513
|
+
"@braintree/sanitize-url": "npm:^7.1.2"
|
|
4495
4514
|
"@iconify/utils": "npm:^3.0.2"
|
|
4496
|
-
"@mermaid-js/parser": "npm:^1.
|
|
4515
|
+
"@mermaid-js/parser": "npm:^1.2.1"
|
|
4497
4516
|
"@types/d3": "npm:^7.4.3"
|
|
4498
4517
|
"@upsetjs/venn.js": "npm:^2.0.0"
|
|
4499
|
-
cytoscape: "npm:^3.
|
|
4518
|
+
cytoscape: "npm:^3.34.0"
|
|
4500
4519
|
cytoscape-cose-bilkent: "npm:^4.1.0"
|
|
4501
4520
|
cytoscape-fcose: "npm:^2.2.0"
|
|
4502
4521
|
d3: "npm:^7.9.0"
|
|
4503
4522
|
d3-sankey: "npm:^0.12.3"
|
|
4504
4523
|
dagre-d3-es: "npm:7.0.14"
|
|
4505
|
-
dayjs: "npm:^1.11.
|
|
4506
|
-
dompurify: "npm:^3.3.
|
|
4524
|
+
dayjs: "npm:^1.11.21"
|
|
4525
|
+
dompurify: "npm:^3.3.3"
|
|
4507
4526
|
es-toolkit: "npm:^1.45.1"
|
|
4508
|
-
|
|
4527
|
+
fastdom: "npm:1.0.12"
|
|
4528
|
+
katex: "npm:^0.16.47"
|
|
4509
4529
|
khroma: "npm:^2.1.0"
|
|
4510
4530
|
marked: "npm:^16.3.0"
|
|
4511
4531
|
roughjs: "npm:^4.6.6"
|
|
4512
4532
|
stylis: "npm:^4.3.6"
|
|
4513
4533
|
ts-dedent: "npm:^2.2.0"
|
|
4514
4534
|
uuid: "npm:^11.1.0 || ^12 || ^13 || ^14.0.0"
|
|
4515
|
-
checksum: 10c0/
|
|
4535
|
+
checksum: 10c0/43c9a51bb93482cf882119595828900567a737401ad52b91c6fd415f839302b56080102376536cbb285d7aad3eb31b101e92e18d604647915195c1e10b879ec5
|
|
4516
4536
|
languageName: node
|
|
4517
4537
|
linkType: hard
|
|
4518
4538
|
|
|
@@ -4924,21 +4944,21 @@ __metadata:
|
|
|
4924
4944
|
languageName: node
|
|
4925
4945
|
linkType: hard
|
|
4926
4946
|
|
|
4927
|
-
"nanoid@npm:^3.3.
|
|
4928
|
-
version: 3.3.
|
|
4929
|
-
resolution: "nanoid@npm:3.3.
|
|
4947
|
+
"nanoid@npm:^3.3.16":
|
|
4948
|
+
version: 3.3.18
|
|
4949
|
+
resolution: "nanoid@npm:3.3.18"
|
|
4930
4950
|
bin:
|
|
4931
4951
|
nanoid: bin/nanoid.cjs
|
|
4932
|
-
checksum: 10c0/
|
|
4952
|
+
checksum: 10c0/b994b4e396730f8be2520923284e2040d61eaee55cc6d4935ef6d38d34bafdc46133eda4d3faea5073bda545aa6079d82b886caeac5c731cf9ac18bcc1301425
|
|
4933
4953
|
languageName: node
|
|
4934
4954
|
linkType: hard
|
|
4935
4955
|
|
|
4936
4956
|
"nanoid@npm:^5.0.9":
|
|
4937
|
-
version: 5.1.
|
|
4938
|
-
resolution: "nanoid@npm:5.1.
|
|
4957
|
+
version: 5.1.16
|
|
4958
|
+
resolution: "nanoid@npm:5.1.16"
|
|
4939
4959
|
bin:
|
|
4940
4960
|
nanoid: bin/nanoid.js
|
|
4941
|
-
checksum: 10c0/
|
|
4961
|
+
checksum: 10c0/04b4f96237f5639716da0e98f453361b313bebaf458bb67dea2d384724fc8b3340a28f032a4373052150bcf3b801d122e291d81ae4fc522969f55c134f4401a3
|
|
4942
4962
|
languageName: node
|
|
4943
4963
|
linkType: hard
|
|
4944
4964
|
|
|
@@ -5601,13 +5621,13 @@ __metadata:
|
|
|
5601
5621
|
linkType: hard
|
|
5602
5622
|
|
|
5603
5623
|
"postcss@npm:^8.4.43, postcss@npm:^8.5.10, postcss@npm:^8.5.14, postcss@npm:^8.5.6":
|
|
5604
|
-
version: 8.5.
|
|
5605
|
-
resolution: "postcss@npm:8.5.
|
|
5624
|
+
version: 8.5.25
|
|
5625
|
+
resolution: "postcss@npm:8.5.25"
|
|
5606
5626
|
dependencies:
|
|
5607
|
-
nanoid: "npm:^3.3.
|
|
5627
|
+
nanoid: "npm:^3.3.16"
|
|
5608
5628
|
picocolors: "npm:^1.1.1"
|
|
5609
5629
|
source-map-js: "npm:^1.2.1"
|
|
5610
|
-
checksum: 10c0/
|
|
5630
|
+
checksum: 10c0/0a12c1e74b456c57122e81f684e02fd98ff4d57526f794d10c996df1147158808f5ae373ac82b988c8de6cbbaa82dbd7b13803b14f5dd3cf7cc6a42ccad5c9f2
|
|
5611
5631
|
languageName: node
|
|
5612
5632
|
linkType: hard
|
|
5613
5633
|
|
|
@@ -5783,14 +5803,14 @@ __metadata:
|
|
|
5783
5803
|
|
|
5784
5804
|
"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin<compat/resolve>":
|
|
5785
5805
|
version: 1.22.10
|
|
5786
|
-
resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin<compat/resolve>::version=1.22.10&hash=
|
|
5806
|
+
resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin<compat/resolve>::version=1.22.10&hash=9bd1a5"
|
|
5787
5807
|
dependencies:
|
|
5788
5808
|
is-core-module: "npm:^2.16.0"
|
|
5789
5809
|
path-parse: "npm:^1.0.7"
|
|
5790
5810
|
supports-preserve-symlinks-flag: "npm:^1.0.0"
|
|
5791
5811
|
bin:
|
|
5792
5812
|
resolve: bin/resolve
|
|
5793
|
-
checksum: 10c0/
|
|
5813
|
+
checksum: 10c0/da5c4a85971e6eeb821805d117092321c6c257a6e1e45382c0b7ef41368a7e98690e01a08bac88b111443410a49e2fb17d1802ac5c51c8fc5532d77bef9f4be9
|
|
5794
5814
|
languageName: node
|
|
5795
5815
|
linkType: hard
|
|
5796
5816
|
|
|
@@ -5947,6 +5967,13 @@ __metadata:
|
|
|
5947
5967
|
languageName: node
|
|
5948
5968
|
linkType: hard
|
|
5949
5969
|
|
|
5970
|
+
"sax@npm:^1.2.4":
|
|
5971
|
+
version: 1.6.1
|
|
5972
|
+
resolution: "sax@npm:1.6.1"
|
|
5973
|
+
checksum: 10c0/c91a71043d60da50fdf1e2cee936fc7ad4c9376afb8d1022aef5655f279433640859ec06b3b49abfcbe578fc7da2828cc1661e45aaedf835f5393496193437fa
|
|
5974
|
+
languageName: node
|
|
5975
|
+
linkType: hard
|
|
5976
|
+
|
|
5950
5977
|
"sax@npm:^1.5.0":
|
|
5951
5978
|
version: 1.6.0
|
|
5952
5979
|
resolution: "sax@npm:1.6.0"
|
|
@@ -6135,6 +6162,13 @@ __metadata:
|
|
|
6135
6162
|
languageName: node
|
|
6136
6163
|
linkType: hard
|
|
6137
6164
|
|
|
6165
|
+
"strictdom@npm:^1.0.1":
|
|
6166
|
+
version: 1.0.1
|
|
6167
|
+
resolution: "strictdom@npm:1.0.1"
|
|
6168
|
+
checksum: 10c0/3006ffccaa89ecc0ce2679d2726b7ea4901faa91152bf0211d11685de1c710f09a178c9dbc5ab1496e6101b686192595ff2aa78f128a814fd838793e4f29edc5
|
|
6169
|
+
languageName: node
|
|
6170
|
+
linkType: hard
|
|
6171
|
+
|
|
6138
6172
|
"string-width@npm:^3.0.0, string-width@npm:^3.1.0":
|
|
6139
6173
|
version: 3.1.0
|
|
6140
6174
|
resolution: "string-width@npm:3.1.0"
|
|
@@ -6246,8 +6280,8 @@ __metadata:
|
|
|
6246
6280
|
linkType: hard
|
|
6247
6281
|
|
|
6248
6282
|
"svgo@npm:^4.0.0":
|
|
6249
|
-
version: 4.0.
|
|
6250
|
-
resolution: "svgo@npm:4.0.
|
|
6283
|
+
version: 4.0.2
|
|
6284
|
+
resolution: "svgo@npm:4.0.2"
|
|
6251
6285
|
dependencies:
|
|
6252
6286
|
commander: "npm:^11.1.0"
|
|
6253
6287
|
css-select: "npm:^5.1.0"
|
|
@@ -6258,7 +6292,7 @@ __metadata:
|
|
|
6258
6292
|
sax: "npm:^1.5.0"
|
|
6259
6293
|
bin:
|
|
6260
6294
|
svgo: ./bin/svgo.js
|
|
6261
|
-
checksum: 10c0/
|
|
6295
|
+
checksum: 10c0/d58c9446d2701dd57ef62a29b4299b157cfc32e2282f82fc68dd7cdca2e1efdf0d8bb0fb30ba0499f322d20b6304be277ffbc60a6b6a75489fa30c5300694b9a
|
|
6262
6296
|
languageName: node
|
|
6263
6297
|
linkType: hard
|
|
6264
6298
|
|
|
@@ -6284,15 +6318,15 @@ __metadata:
|
|
|
6284
6318
|
linkType: hard
|
|
6285
6319
|
|
|
6286
6320
|
"tar@npm:^7.5.4":
|
|
6287
|
-
version: 7.5.
|
|
6288
|
-
resolution: "tar@npm:7.5.
|
|
6321
|
+
version: 7.5.22
|
|
6322
|
+
resolution: "tar@npm:7.5.22"
|
|
6289
6323
|
dependencies:
|
|
6290
6324
|
"@isaacs/fs-minipass": "npm:^4.0.0"
|
|
6291
6325
|
chownr: "npm:^3.0.0"
|
|
6292
6326
|
minipass: "npm:^7.1.2"
|
|
6293
6327
|
minizlib: "npm:^3.1.0"
|
|
6294
6328
|
yallist: "npm:^5.0.0"
|
|
6295
|
-
checksum: 10c0/
|
|
6329
|
+
checksum: 10c0/1311f6be85a8157ac4c9147bae43e13923d2a1aae15e4aa1bd5239e4e03d2cf53cfe103dde7f35832fbb4c938b042856bc8e9a0afd29abd05e2d1608788c4fea
|
|
6296
6330
|
languageName: node
|
|
6297
6331
|
linkType: hard
|
|
6298
6332
|
|
|
@@ -6703,6 +6737,17 @@ __metadata:
|
|
|
6703
6737
|
languageName: node
|
|
6704
6738
|
linkType: hard
|
|
6705
6739
|
|
|
6740
|
+
"xml-js@npm:^1.6.11":
|
|
6741
|
+
version: 1.6.11
|
|
6742
|
+
resolution: "xml-js@npm:1.6.11"
|
|
6743
|
+
dependencies:
|
|
6744
|
+
sax: "npm:^1.2.4"
|
|
6745
|
+
bin:
|
|
6746
|
+
xml-js: ./bin/cli.js
|
|
6747
|
+
checksum: 10c0/c83631057f10bf90ea785cee434a8a1a0030c7314fe737ad9bf568a281083b565b28b14c9e9ba82f11fc9dc582a3a907904956af60beb725be1c9ad4b030bc5a
|
|
6748
|
+
languageName: node
|
|
6749
|
+
linkType: hard
|
|
6750
|
+
|
|
6706
6751
|
"y18n@npm:^4.0.0":
|
|
6707
6752
|
version: 4.0.3
|
|
6708
6753
|
resolution: "y18n@npm:4.0.3"
|