@cratis/scene.blueprint.default 4.34.0 → 4.36.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.
Files changed (140) hide show
  1. package/ComponentName.ts +12 -0
  2. package/defaultBlueprintComponents.ts +5 -1
  3. package/dist/cjs/ComponentName.js +4 -0
  4. package/dist/cjs/ComponentName.js.map +1 -1
  5. package/dist/cjs/defaultBlueprint.js +1 -0
  6. package/dist/cjs/defaultBlueprint.js.map +1 -1
  7. package/dist/cjs/defaultBlueprintComponentMetadata.js +1 -0
  8. package/dist/cjs/defaultBlueprintComponentMetadata.js.map +1 -1
  9. package/dist/cjs/defaultBlueprintComponents.js +9 -1
  10. package/dist/cjs/defaultBlueprintComponents.js.map +1 -1
  11. package/dist/cjs/foundation/ActivityFeed.js +122 -0
  12. package/dist/cjs/foundation/ActivityFeed.js.map +1 -0
  13. package/dist/cjs/foundation/AvatarStack.js +73 -0
  14. package/dist/cjs/foundation/AvatarStack.js.map +1 -0
  15. package/dist/cjs/foundation/ChecklistSection.js +174 -0
  16. package/dist/cjs/foundation/ChecklistSection.js.map +1 -0
  17. package/dist/cjs/foundation/FileUploader.js +218 -0
  18. package/dist/cjs/foundation/FileUploader.js.map +1 -0
  19. package/dist/cjs/foundation/FileUploaderHandler.js +17 -0
  20. package/dist/cjs/foundation/FileUploaderHandler.js.map +1 -0
  21. package/dist/cjs/foundation/activityModel.js +63 -0
  22. package/dist/cjs/foundation/activityModel.js.map +1 -0
  23. package/dist/cjs/foundation/avatarModel.js +42 -0
  24. package/dist/cjs/foundation/avatarModel.js.map +1 -0
  25. package/dist/cjs/foundation/checklistModel.js +59 -0
  26. package/dist/cjs/foundation/checklistModel.js.map +1 -0
  27. package/dist/cjs/foundation/formatting.js +11 -0
  28. package/dist/cjs/foundation/formatting.js.map +1 -1
  29. package/dist/cjs/foundation/foundationComponentMetadata.js +26 -0
  30. package/dist/cjs/foundation/foundationComponentMetadata.js.map +1 -1
  31. package/dist/cjs/foundation/foundationDescriptors.js +128 -0
  32. package/dist/cjs/foundation/foundationDescriptors.js.map +1 -1
  33. package/dist/cjs/foundation/foundationSamples.js +114 -0
  34. package/dist/cjs/foundation/foundationSamples.js.map +1 -1
  35. package/dist/cjs/foundation/foundationStrings.js +15 -0
  36. package/dist/cjs/foundation/foundationStrings.js.map +1 -1
  37. package/dist/cjs/foundation/uploadModel.js +71 -0
  38. package/dist/cjs/foundation/uploadModel.js.map +1 -0
  39. package/dist/cjs/index.js +33 -0
  40. package/dist/cjs/index.js.map +1 -1
  41. package/dist/cjs/preview-host/ApplicationHost.js +48 -27
  42. package/dist/cjs/preview-host/ApplicationHost.js.map +1 -1
  43. package/dist/esm/ComponentName.d.ts +5 -1
  44. package/dist/esm/ComponentName.d.ts.map +1 -1
  45. package/dist/esm/ComponentName.js +4 -0
  46. package/dist/esm/ComponentName.js.map +1 -1
  47. package/dist/esm/defaultBlueprint.js +1 -0
  48. package/dist/esm/defaultBlueprint.js.map +1 -1
  49. package/dist/esm/defaultBlueprintComponentMetadata.js +1 -0
  50. package/dist/esm/defaultBlueprintComponentMetadata.js.map +1 -1
  51. package/dist/esm/defaultBlueprintComponents.d.ts.map +1 -1
  52. package/dist/esm/defaultBlueprintComponents.js +9 -1
  53. package/dist/esm/defaultBlueprintComponents.js.map +1 -1
  54. package/dist/esm/foundation/ActivityFeed.d.ts +3 -0
  55. package/dist/esm/foundation/ActivityFeed.d.ts.map +1 -0
  56. package/dist/esm/foundation/ActivityFeed.js +120 -0
  57. package/dist/esm/foundation/ActivityFeed.js.map +1 -0
  58. package/dist/esm/foundation/AvatarStack.d.ts +3 -0
  59. package/dist/esm/foundation/AvatarStack.d.ts.map +1 -0
  60. package/dist/esm/foundation/AvatarStack.js +71 -0
  61. package/dist/esm/foundation/AvatarStack.js.map +1 -0
  62. package/dist/esm/foundation/ChecklistSection.d.ts +3 -0
  63. package/dist/esm/foundation/ChecklistSection.d.ts.map +1 -0
  64. package/dist/esm/foundation/ChecklistSection.js +172 -0
  65. package/dist/esm/foundation/ChecklistSection.js.map +1 -0
  66. package/dist/esm/foundation/FileUploader.d.ts +3 -0
  67. package/dist/esm/foundation/FileUploader.d.ts.map +1 -0
  68. package/dist/esm/foundation/FileUploader.js +216 -0
  69. package/dist/esm/foundation/FileUploader.js.map +1 -0
  70. package/dist/esm/foundation/FileUploaderHandler.d.ts +8 -0
  71. package/dist/esm/foundation/FileUploaderHandler.d.ts.map +1 -0
  72. package/dist/esm/foundation/FileUploaderHandler.js +14 -0
  73. package/dist/esm/foundation/FileUploaderHandler.js.map +1 -0
  74. package/dist/esm/foundation/Foundation.stories.d.ts +8 -0
  75. package/dist/esm/foundation/Foundation.stories.d.ts.map +1 -1
  76. package/dist/esm/foundation/Foundation.stories.js +8 -0
  77. package/dist/esm/foundation/Foundation.stories.js.map +1 -1
  78. package/dist/esm/foundation/activityModel.d.ts +22 -0
  79. package/dist/esm/foundation/activityModel.d.ts.map +1 -0
  80. package/dist/esm/foundation/activityModel.js +58 -0
  81. package/dist/esm/foundation/activityModel.js.map +1 -0
  82. package/dist/esm/foundation/avatarModel.d.ts +11 -0
  83. package/dist/esm/foundation/avatarModel.d.ts.map +1 -0
  84. package/dist/esm/foundation/avatarModel.js +38 -0
  85. package/dist/esm/foundation/avatarModel.js.map +1 -0
  86. package/dist/esm/foundation/checklistModel.d.ts +17 -0
  87. package/dist/esm/foundation/checklistModel.d.ts.map +1 -0
  88. package/dist/esm/foundation/checklistModel.js +53 -0
  89. package/dist/esm/foundation/checklistModel.js.map +1 -0
  90. package/dist/esm/foundation/formatting.d.ts +1 -0
  91. package/dist/esm/foundation/formatting.d.ts.map +1 -1
  92. package/dist/esm/foundation/formatting.js +11 -1
  93. package/dist/esm/foundation/formatting.js.map +1 -1
  94. package/dist/esm/foundation/foundationComponentMetadata.d.ts.map +1 -1
  95. package/dist/esm/foundation/foundationComponentMetadata.js +26 -0
  96. package/dist/esm/foundation/foundationComponentMetadata.js.map +1 -1
  97. package/dist/esm/foundation/foundationDescriptors.d.ts.map +1 -1
  98. package/dist/esm/foundation/foundationDescriptors.js +128 -0
  99. package/dist/esm/foundation/foundationDescriptors.js.map +1 -1
  100. package/dist/esm/foundation/foundationSamples.d.ts.map +1 -1
  101. package/dist/esm/foundation/foundationSamples.js +114 -0
  102. package/dist/esm/foundation/foundationSamples.js.map +1 -1
  103. package/dist/esm/foundation/foundationStrings.d.ts +15 -0
  104. package/dist/esm/foundation/foundationStrings.d.ts.map +1 -1
  105. package/dist/esm/foundation/foundationStrings.js +15 -0
  106. package/dist/esm/foundation/foundationStrings.js.map +1 -1
  107. package/dist/esm/foundation/index.d.ts +9 -0
  108. package/dist/esm/foundation/index.d.ts.map +1 -1
  109. package/dist/esm/foundation/index.js +9 -0
  110. package/dist/esm/foundation/index.js.map +1 -1
  111. package/dist/esm/foundation/uploadModel.d.ts +31 -0
  112. package/dist/esm/foundation/uploadModel.d.ts.map +1 -0
  113. package/dist/esm/foundation/uploadModel.js +65 -0
  114. package/dist/esm/foundation/uploadModel.js.map +1 -0
  115. package/dist/esm/index.js +10 -1
  116. package/dist/esm/index.js.map +1 -1
  117. package/dist/esm/preview-host/ApplicationHost.d.ts +5 -2
  118. package/dist/esm/preview-host/ApplicationHost.d.ts.map +1 -1
  119. package/dist/esm/preview-host/ApplicationHost.js +50 -29
  120. package/dist/esm/preview-host/ApplicationHost.js.map +1 -1
  121. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  122. package/foundation/ActivityFeed.tsx +61 -0
  123. package/foundation/AvatarStack.tsx +43 -0
  124. package/foundation/ChecklistSection.tsx +80 -0
  125. package/foundation/FileUploader.tsx +122 -0
  126. package/foundation/FileUploaderHandler.tsx +22 -0
  127. package/foundation/Foundation.stories.tsx +8 -0
  128. package/foundation/activityModel.ts +65 -0
  129. package/foundation/avatarModel.ts +36 -0
  130. package/foundation/checklistModel.ts +62 -0
  131. package/foundation/formatting.ts +9 -0
  132. package/foundation/foundationComponentMetadata.ts +4 -0
  133. package/foundation/foundationDescriptors.ts +79 -0
  134. package/foundation/foundationSamples.ts +29 -0
  135. package/foundation/foundationStrings.ts +15 -0
  136. package/foundation/index.ts +9 -0
  137. package/foundation/uploadModel.ts +66 -0
  138. package/package.json +8 -8
  139. package/preview-host/ApplicationHost.tsx +57 -16
  140. package/shell/layout.css +234 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foundationSamples.js","sources":["../../../foundation/foundationSamples.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\nimport { componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\nimport { defaultBlueprintName } from '../packageName';\nimport { ComponentState } from './ComponentState';\n\n/**\n * What a story or a specification feeds each foundation component to see it populated.\n *\n * These are design-time and test-time values, never part of what a component is: a component declares the shape of its data\n * and a screen binds it to a query (spec SD1). The domain blueprints supply real preview data as sample-data packs; this is\n * only enough to draw each component in each state.\n */\nexport interface FoundationSample {\n /** The properties that make the component populated. */\n properties: Record<string, unknown>;\n\n /** Text that only appears when the component shows its data, so a specification can prove the no-permission state shows none of it. */\n data: string[];\n\n /** Whether the component shows data and so owns the five standard states; chips and the empty state themselves do not. */\n stateful: boolean;\n}\n\nexport const foundationSamples: Record<string, FoundationSample> = {\n [ComponentName.EmptyState]: { properties: { headline: 'No invoices yet', hint: 'Invoices you create appear here.', icon: 'file', actionLabel: 'New invoice' }, data: [], stateful: false },\n [ComponentName.StatCard]: { properties: { label: 'Open pipeline', value: 1234567, format: 'currency', currency: 'USD', change: 12.5, comparison: 'last month', locale: 'en-US' }, data: ['$1,234,567'], stateful: true },\n [ComponentName.TrendChip]: { properties: { change: -3.2, goodDirection: 'down', comparison: 'last week', locale: 'en-US' }, data: [], stateful: false },\n [ComponentName.StatusChip]: { properties: { status: 'Awaiting approval', tone: 'warning' }, data: [], stateful: false },\n [ComponentName.ChartWrapper]: {\n properties: { title: 'Revenue by quarter', kind: 'line', categories: ['Q1', 'Q2', 'Q3', 'Q4'], series: [{ name: 'Revenue', values: [120, 180, 150, 240] }, { name: 'Target', values: [100, 150, 200, 220] }], locale: 'en-US' },\n data: ['Revenue by quarter'], stateful: true,\n },\n [ComponentName.FilterBuilder]: {\n properties: {\n fields: [{ name: 'owner', label: 'Owner', type: 'text' }, { name: 'status', label: 'Status', type: 'select', options: ['Open', 'Won', 'Lost'] }, { name: 'value', label: 'Value', type: 'number' }],\n filter: { operator: 'and', conditions: [{ field: 'status', operator: 'is', value: 'Open' }, { field: 'owner', operator: 'contains', value: 'Ada' }], groups: [] },\n },\n data: ['2 active filters'], stateful: true,\n },\n [ComponentName.ColumnChooser]: {\n properties: { columns: [{ id: 'name', label: 'Name', locked: true }, { id: 'owner', label: 'Owner' }, { id: 'status', label: 'Status', visible: false }] },\n data: ['3 shown'], stateful: true,\n },\n [ComponentName.SavedViewsMenu]: {\n properties: { views: [{ id: 'all', label: 'All leads' }, { id: 'mine', label: 'Mine' }, { id: 'overdue', label: 'Overdue' }], activeView: 'mine' },\n data: ['Mine'], stateful: true,\n },\n};\n\n/** A scene element for a foundation component, populated with its sample unless properties are given, with the state forced when asked. */\nexport function foundationElement(name: string, properties?: Record<string, unknown>, state?: ComponentState): ExternalComponent {\n const sample = foundationSamples[name];\n return {\n id: `${name}-sample`,\n componentName: componentRegistryKey(defaultBlueprintName, name),\n properties: { ...(properties ?? sample?.properties ?? {}), ...(state === undefined ? {} : { state }) },\n slots: {},\n } as unknown as ExternalComponent;\n}\n"],"names":["foundationSamples","ComponentName","EmptyState","properties","headline","hint","icon","actionLabel","data","stateful","StatCard","label","value","format","currency","change","comparison","locale","TrendChip","goodDirection","StatusChip","status","tone","ChartWrapper","title","kind","categories","series","name","values","FilterBuilder","fields","type","options","filter","operator","conditions","field","groups","ColumnChooser","columns","id","locked","visible","SavedViewsMenu","views","activeView","foundationElement","state","sample","componentName","componentRegistryKey","defaultBlueprintName","undefined","slots"],"mappings":"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"}
1
+ {"version":3,"file":"foundationSamples.js","sources":["../../../foundation/foundationSamples.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\nimport { componentRegistryKey } from '@cratis/scene.react';\nimport { ComponentName } from '../ComponentName';\nimport { defaultBlueprintName } from '../packageName';\nimport { ComponentState } from './ComponentState';\n\n/**\n * What a story or a specification feeds each foundation component to see it populated.\n *\n * These are design-time and test-time values, never part of what a component is: a component declares the shape of its data\n * and a screen binds it to a query (spec SD1). The domain blueprints supply real preview data as sample-data packs; this is\n * only enough to draw each component in each state.\n */\nexport interface FoundationSample {\n /** The properties that make the component populated. */\n properties: Record<string, unknown>;\n\n /** Text that only appears when the component shows its data, so a specification can prove the no-permission state shows none of it. */\n data: string[];\n\n /** Whether the component shows data and so owns the five standard states; chips and the empty state themselves do not. */\n stateful: boolean;\n}\n\nexport const foundationSamples: Record<string, FoundationSample> = {\n [ComponentName.EmptyState]: { properties: { headline: 'No invoices yet', hint: 'Invoices you create appear here.', icon: 'file', actionLabel: 'New invoice' }, data: [], stateful: false },\n [ComponentName.StatCard]: { properties: { label: 'Open pipeline', value: 1234567, format: 'currency', currency: 'USD', change: 12.5, comparison: 'last month', locale: 'en-US' }, data: ['$1,234,567'], stateful: true },\n [ComponentName.TrendChip]: { properties: { change: -3.2, goodDirection: 'down', comparison: 'last week', locale: 'en-US' }, data: [], stateful: false },\n [ComponentName.StatusChip]: { properties: { status: 'Awaiting approval', tone: 'warning' }, data: [], stateful: false },\n [ComponentName.ChartWrapper]: {\n properties: { title: 'Revenue by quarter', kind: 'line', categories: ['Q1', 'Q2', 'Q3', 'Q4'], series: [{ name: 'Revenue', values: [120, 180, 150, 240] }, { name: 'Target', values: [100, 150, 200, 220] }], locale: 'en-US' },\n data: ['Revenue by quarter'], stateful: true,\n },\n [ComponentName.FilterBuilder]: {\n properties: {\n fields: [{ name: 'owner', label: 'Owner', type: 'text' }, { name: 'status', label: 'Status', type: 'select', options: ['Open', 'Won', 'Lost'] }, { name: 'value', label: 'Value', type: 'number' }],\n filter: { operator: 'and', conditions: [{ field: 'status', operator: 'is', value: 'Open' }, { field: 'owner', operator: 'contains', value: 'Ada' }], groups: [] },\n },\n data: ['2 active filters'], stateful: true,\n },\n [ComponentName.ColumnChooser]: {\n properties: { columns: [{ id: 'name', label: 'Name', locked: true }, { id: 'owner', label: 'Owner' }, { id: 'status', label: 'Status', visible: false }] },\n data: ['3 shown'], stateful: true,\n },\n [ComponentName.SavedViewsMenu]: {\n properties: { views: [{ id: 'all', label: 'All leads' }, { id: 'mine', label: 'Mine' }, { id: 'overdue', label: 'Overdue' }], activeView: 'mine' },\n data: ['Mine'], stateful: true,\n },\n [ComponentName.ChecklistSection]: {\n properties: {\n today: '2026-03-10', locale: 'en-US',\n sections: [\n { title: 'Before day one', items: [{ id: 't1', label: 'Send the contract', owner: 'Grace', due: '2026-03-01', done: true }, { id: 't2', label: 'Order a laptop', owner: 'Linus', due: '2026-03-05' }] },\n { title: 'First week', items: [{ id: 't3', label: 'Security training', owner: 'Ada', due: '2026-03-20' }] },\n ],\n },\n data: ['Send the contract', '1 of 2 complete'], stateful: true,\n },\n [ComponentName.ActivityFeed]: {\n properties: {\n locale: 'en-US', timeZone: 'UTC',\n entries: [\n { id: 'a1', actor: 'Ada Lovelace', action: 'commented', kind: 'comment', at: '2026-03-10T09:30:00Z', body: 'Sent the revised quote.' },\n { id: 'a2', actor: 'Grace Hopper', action: 'changed the owner to Linus', kind: 'change', at: '2026-03-09T16:00:00Z' },\n { id: 'a3', actor: 'System', action: 'marked the deal as qualified', kind: 'status', at: '2026-03-09T08:00:00Z' },\n ],\n },\n data: ['Sent the revised quote.'], stateful: true,\n },\n [ComponentName.AvatarStack]: {\n properties: { people: [{ name: 'Ada Lovelace' }, { name: 'Grace Hopper' }, { name: 'Linus Torvalds' }, { name: 'Margaret Hamilton' }, { name: 'Alan Turing' }, { name: 'Barbara Liskov' }], max: 4 },\n data: ['+2'], stateful: true,\n },\n [ComponentName.FileUploader]: {\n properties: { accept: '.pdf, image/*', maxSizeMb: 10, multiple: true },\n data: [], stateful: true,\n },\n};\n\n/** A scene element for a foundation component, populated with its sample unless properties are given, with the state forced when asked. */\nexport function foundationElement(name: string, properties?: Record<string, unknown>, state?: ComponentState): ExternalComponent {\n const sample = foundationSamples[name];\n return {\n id: `${name}-sample`,\n componentName: componentRegistryKey(defaultBlueprintName, name),\n properties: { ...(properties ?? sample?.properties ?? {}), ...(state === undefined ? {} : { state }) },\n slots: {},\n } as unknown as ExternalComponent;\n}\n"],"names":["foundationSamples","ComponentName","EmptyState","properties","headline","hint","icon","actionLabel","data","stateful","StatCard","label","value","format","currency","change","comparison","locale","TrendChip","goodDirection","StatusChip","status","tone","ChartWrapper","title","kind","categories","series","name","values","FilterBuilder","fields","type","options","filter","operator","conditions","field","groups","ColumnChooser","columns","id","locked","visible","SavedViewsMenu","views","activeView","ChecklistSection","today","sections","items","owner","due","done","ActivityFeed","timeZone","entries","actor","action","at","body","AvatarStack","people","max","FileUploader","accept","maxSizeMb","multiple","foundationElement","state","sample","componentName","componentRegistryKey","defaultBlueprintName","undefined","slots"],"mappings":";;;;AAAA;AACA;MA0BaA,iBAAAA,GAAsD;IAC/D,CAACC,aAAAA,CAAcC,UAAU,GAAG;QAAEC,UAAAA,EAAY;YAAEC,QAAAA,EAAU,iBAAA;YAAmBC,IAAAA,EAAM,kCAAA;YAAoCC,IAAAA,EAAM,MAAA;YAAQC,WAAAA,EAAa;AAAc,SAAA;AAAGC,QAAAA,IAAAA,EAAM,EAAE;QAAEC,QAAAA,EAAU;AAAM,KAAA;IACzL,CAACR,aAAAA,CAAcS,QAAQ,GAAG;QAAEP,UAAAA,EAAY;YAAEQ,KAAAA,EAAO,eAAA;YAAiBC,KAAAA,EAAO,OAAA;YAASC,MAAAA,EAAQ,UAAA;YAAYC,QAAAA,EAAU,KAAA;YAAOC,MAAAA,EAAQ,IAAA;YAAMC,UAAAA,EAAY,YAAA;YAAcC,MAAAA,EAAQ;AAAQ,SAAA;QAAGT,IAAAA,EAAM;AAAC,YAAA;AAAa,SAAA;QAAEC,QAAAA,EAAU;AAAK,KAAA;IACvN,CAACR,aAAAA,CAAciB,SAAS,GAAG;QAAEf,UAAAA,EAAY;AAAEY,YAAAA,MAAAA,EAAQ,IAAC;YAAKI,aAAAA,EAAe,MAAA;YAAQH,UAAAA,EAAY,WAAA;YAAaC,MAAAA,EAAQ;AAAQ,SAAA;AAAGT,QAAAA,IAAAA,EAAM,EAAE;QAAEC,QAAAA,EAAU;AAAM,KAAA;IACtJ,CAACR,aAAAA,CAAcmB,UAAU,GAAG;QAAEjB,UAAAA,EAAY;YAAEkB,MAAAA,EAAQ,mBAAA;YAAqBC,IAAAA,EAAM;AAAU,SAAA;AAAGd,QAAAA,IAAAA,EAAM,EAAE;QAAEC,QAAAA,EAAU;AAAM,KAAA;IACtH,CAACR,aAAAA,CAAcsB,YAAY,GAAG;QAC1BpB,UAAAA,EAAY;YAAEqB,KAAAA,EAAO,oBAAA;YAAsBC,IAAAA,EAAM,MAAA;YAAQC,UAAAA,EAAY;AAAC,gBAAA,IAAA;AAAM,gBAAA,IAAA;AAAM,gBAAA,IAAA;AAAM,gBAAA;AAAK,aAAA;YAAEC,MAAAA,EAAQ;AAAC,gBAAA;oBAAEC,IAAAA,EAAM,SAAA;oBAAWC,MAAAA,EAAQ;AAAC,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA;AAAI;AAAC,iBAAA;AAAG,gBAAA;oBAAED,IAAAA,EAAM,QAAA;oBAAUC,MAAAA,EAAQ;AAAC,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA;AAAI;AAAC;AAAE,aAAA;YAAEZ,MAAAA,EAAQ;AAAQ,SAAA;QAC9NT,IAAAA,EAAM;AAAC,YAAA;AAAqB,SAAA;QAAEC,QAAAA,EAAU;AAC5C,KAAA;IACA,CAACR,aAAAA,CAAc6B,aAAa,GAAG;QAC3B3B,UAAAA,EAAY;YACR4B,MAAAA,EAAQ;AAAC,gBAAA;oBAAEH,IAAAA,EAAM,OAAA;oBAASjB,KAAAA,EAAO,OAAA;oBAASqB,IAAAA,EAAM;AAAO,iBAAA;AAAG,gBAAA;oBAAEJ,IAAAA,EAAM,QAAA;oBAAUjB,KAAAA,EAAO,QAAA;oBAAUqB,IAAAA,EAAM,QAAA;oBAAUC,OAAAA,EAAS;AAAC,wBAAA,MAAA;AAAQ,wBAAA,KAAA;AAAO,wBAAA;AAAO;AAAC,iBAAA;AAAG,gBAAA;oBAAEL,IAAAA,EAAM,OAAA;oBAASjB,KAAAA,EAAO,OAAA;oBAASqB,IAAAA,EAAM;AAAS;AAAE,aAAA;YACnME,MAAAA,EAAQ;gBAAEC,QAAAA,EAAU,KAAA;gBAAOC,UAAAA,EAAY;AAAC,oBAAA;wBAAEC,KAAAA,EAAO,QAAA;wBAAUF,QAAAA,EAAU,IAAA;wBAAMvB,KAAAA,EAAO;AAAO,qBAAA;AAAG,oBAAA;wBAAEyB,KAAAA,EAAO,OAAA;wBAASF,QAAAA,EAAU,UAAA;wBAAYvB,KAAAA,EAAO;AAAM;AAAE,iBAAA;AAAE0B,gBAAAA,MAAAA,EAAQ;AAAG;AACpK,SAAA;QACA9B,IAAAA,EAAM;AAAC,YAAA;AAAmB,SAAA;QAAEC,QAAAA,EAAU;AAC1C,KAAA;IACA,CAACR,aAAAA,CAAcsC,aAAa,GAAG;QAC3BpC,UAAAA,EAAY;YAAEqC,OAAAA,EAAS;AAAC,gBAAA;oBAAEC,EAAAA,EAAI,MAAA;oBAAQ9B,KAAAA,EAAO,MAAA;oBAAQ+B,MAAAA,EAAQ;AAAK,iBAAA;AAAG,gBAAA;oBAAED,EAAAA,EAAI,OAAA;oBAAS9B,KAAAA,EAAO;AAAQ,iBAAA;AAAG,gBAAA;oBAAE8B,EAAAA,EAAI,QAAA;oBAAU9B,KAAAA,EAAO,QAAA;oBAAUgC,OAAAA,EAAS;AAAM;AAAE;AAAC,SAAA;QACzJnC,IAAAA,EAAM;AAAC,YAAA;AAAU,SAAA;QAAEC,QAAAA,EAAU;AACjC,KAAA;IACA,CAACR,aAAAA,CAAc2C,cAAc,GAAG;QAC5BzC,UAAAA,EAAY;YAAE0C,KAAAA,EAAO;AAAC,gBAAA;oBAAEJ,EAAAA,EAAI,KAAA;oBAAO9B,KAAAA,EAAO;AAAY,iBAAA;AAAG,gBAAA;oBAAE8B,EAAAA,EAAI,MAAA;oBAAQ9B,KAAAA,EAAO;AAAO,iBAAA;AAAG,gBAAA;oBAAE8B,EAAAA,EAAI,SAAA;oBAAW9B,KAAAA,EAAO;AAAU;AAAE,aAAA;YAAEmC,UAAAA,EAAY;AAAO,SAAA;QACjJtC,IAAAA,EAAM;AAAC,YAAA;AAAO,SAAA;QAAEC,QAAAA,EAAU;AAC9B,KAAA;IACA,CAACR,aAAAA,CAAc8C,gBAAgB,GAAG;QAC9B5C,UAAAA,EAAY;YACR6C,KAAAA,EAAO,YAAA;YAAc/B,MAAAA,EAAQ,OAAA;YAC7BgC,QAAAA,EAAU;AACN,gBAAA;oBAAEzB,KAAAA,EAAO,gBAAA;oBAAkB0B,KAAAA,EAAO;AAAC,wBAAA;4BAAET,EAAAA,EAAI,IAAA;4BAAM9B,KAAAA,EAAO,mBAAA;4BAAqBwC,KAAAA,EAAO,OAAA;4BAASC,GAAAA,EAAK,YAAA;4BAAcC,IAAAA,EAAM;AAAK,yBAAA;AAAG,wBAAA;4BAAEZ,EAAAA,EAAI,IAAA;4BAAM9B,KAAAA,EAAO,gBAAA;4BAAkBwC,KAAAA,EAAO,OAAA;4BAASC,GAAAA,EAAK;AAAa;AAAE;AAAC,iBAAA;AACtM,gBAAA;oBAAE5B,KAAAA,EAAO,YAAA;oBAAc0B,KAAAA,EAAO;AAAC,wBAAA;4BAAET,EAAAA,EAAI,IAAA;4BAAM9B,KAAAA,EAAO,mBAAA;4BAAqBwC,KAAAA,EAAO,KAAA;4BAAOC,GAAAA,EAAK;AAAa;AAAE;AAAC;AAC7G;AACL,SAAA;QACA5C,IAAAA,EAAM;AAAC,YAAA,mBAAA;AAAqB,YAAA;AAAkB,SAAA;QAAEC,QAAAA,EAAU;AAC9D,KAAA;IACA,CAACR,aAAAA,CAAcqD,YAAY,GAAG;QAC1BnD,UAAAA,EAAY;YACRc,MAAAA,EAAQ,OAAA;YAASsC,QAAAA,EAAU,KAAA;YAC3BC,OAAAA,EAAS;AACL,gBAAA;oBAAEf,EAAAA,EAAI,IAAA;oBAAMgB,KAAAA,EAAO,cAAA;oBAAgBC,MAAAA,EAAQ,WAAA;oBAAajC,IAAAA,EAAM,SAAA;oBAAWkC,EAAAA,EAAI,sBAAA;oBAAwBC,IAAAA,EAAM;AAA0B,iBAAA;AACrI,gBAAA;oBAAEnB,EAAAA,EAAI,IAAA;oBAAMgB,KAAAA,EAAO,cAAA;oBAAgBC,MAAAA,EAAQ,4BAAA;oBAA8BjC,IAAAA,EAAM,QAAA;oBAAUkC,EAAAA,EAAI;AAAuB,iBAAA;AACpH,gBAAA;oBAAElB,EAAAA,EAAI,IAAA;oBAAMgB,KAAAA,EAAO,QAAA;oBAAUC,MAAAA,EAAQ,8BAAA;oBAAgCjC,IAAAA,EAAM,QAAA;oBAAUkC,EAAAA,EAAI;AAAuB;AACnH;AACL,SAAA;QACAnD,IAAAA,EAAM;AAAC,YAAA;AAA0B,SAAA;QAAEC,QAAAA,EAAU;AACjD,KAAA;IACA,CAACR,aAAAA,CAAc4D,WAAW,GAAG;QACzB1D,UAAAA,EAAY;YAAE2D,MAAAA,EAAQ;AAAC,gBAAA;oBAAElC,IAAAA,EAAM;AAAe,iBAAA;AAAG,gBAAA;oBAAEA,IAAAA,EAAM;AAAe,iBAAA;AAAG,gBAAA;oBAAEA,IAAAA,EAAM;AAAiB,iBAAA;AAAG,gBAAA;oBAAEA,IAAAA,EAAM;AAAoB,iBAAA;AAAG,gBAAA;oBAAEA,IAAAA,EAAM;AAAc,iBAAA;AAAG,gBAAA;oBAAEA,IAAAA,EAAM;AAAiB;AAAE,aAAA;YAAEmC,GAAAA,EAAK;AAAE,SAAA;QACnMvD,IAAAA,EAAM;AAAC,YAAA;AAAK,SAAA;QAAEC,QAAAA,EAAU;AAC5B,KAAA;IACA,CAACR,aAAAA,CAAc+D,YAAY,GAAG;QAC1B7D,UAAAA,EAAY;YAAE8D,MAAAA,EAAQ,eAAA;YAAiBC,SAAAA,EAAW,EAAA;YAAIC,QAAAA,EAAU;AAAK,SAAA;AACrE3D,QAAAA,IAAAA,EAAM,EAAE;QAAEC,QAAAA,EAAU;AACxB;AACJ;AAEA,4IACO,SAAS2D,iBAAAA,CAAkBxC,IAAY,EAAEzB,UAAoC,EAAEkE,KAAsB,EAAA;IACxG,MAAMC,MAAAA,GAAStE,iBAAiB,CAAC4B,IAAAA,CAAK;IACtC,OAAO;QACHa,EAAAA,EAAI,CAAA,EAAGb,IAAAA,CAAK,OAAO,CAAC;AACpB2C,QAAAA,aAAAA,EAAeC,qBAAqBC,oBAAAA,EAAsB7C,IAAAA,CAAAA;QAC1DzB,UAAAA,EAAY;AAAE,YAAA,GAAIA,UAAAA,IAAcmE,MAAAA,EAAQnE,UAAAA,IAAc,EAAE;YAAG,GAAIkE,KAAAA,KAAUK,SAAAA,GAAY,EAAC,GAAI;AAAEL,gBAAAA;;AAAS,SAAA;AACrGM,QAAAA,KAAAA,EAAO;AACX,KAAA;AACJ;;"}
@@ -70,11 +70,26 @@ export declare const foundationStrings: {
70
70
  readonly viewsNone: 'There are no saved views';
71
71
  readonly checklistProgress: '{done} of {total} complete';
72
72
  readonly checklistOwner: 'Owner';
73
+ readonly checklistOverdue: 'Overdue';
74
+ readonly checklistDone: 'Done';
75
+ readonly checklistOpen: 'Open';
76
+ readonly checklistItemProgress: 'Progress of {title}';
77
+ readonly checklistNone: 'This checklist has no tasks';
73
78
  readonly checklistDue: 'Due';
74
79
  readonly activityEmpty: 'No activity yet';
80
+ readonly activityComment: 'Comment';
81
+ readonly activityChange: 'Change';
82
+ readonly activityStatus: 'Status';
83
+ readonly activitySystem: 'System';
84
+ readonly activityBy: 'by {actor}';
75
85
  readonly avatarOverflow: '{count} more';
76
86
  readonly avatarPeople: '{count} people';
77
87
  readonly uploadDrop: 'Drop files here or';
88
+ readonly uploadLimits: 'Up to {limit} each';
89
+ readonly uploadAccepts: 'Accepts {types}';
90
+ readonly uploadSelected: 'Selected files';
91
+ readonly uploadQueued: 'Ready to upload';
92
+ readonly uploadSingle: 'Only one file can be uploaded at a time';
78
93
  readonly uploadBrowse: 'Browse files';
79
94
  readonly uploadRemove: 'Remove {name}';
80
95
  readonly uploadTooLarge: '{name} is larger than {limit}';
@@ -1 +1 @@
1
- {"version":3,"file":"foundationStrings.d.ts","sourceRoot":"","sources":["../../../foundation/foundationStrings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundationStrings.d.ts","sourceRoot":"","sources":["../../../foundation/foundationStrings.ts"],"names":[],"mappings":"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"}
@@ -76,11 +76,26 @@
76
76
  viewsNone: 'There are no saved views',
77
77
  checklistProgress: '{done} of {total} complete',
78
78
  checklistOwner: 'Owner',
79
+ checklistOverdue: 'Overdue',
80
+ checklistDone: 'Done',
81
+ checklistOpen: 'Open',
82
+ checklistItemProgress: 'Progress of {title}',
83
+ checklistNone: 'This checklist has no tasks',
79
84
  checklistDue: 'Due',
80
85
  activityEmpty: 'No activity yet',
86
+ activityComment: 'Comment',
87
+ activityChange: 'Change',
88
+ activityStatus: 'Status',
89
+ activitySystem: 'System',
90
+ activityBy: 'by {actor}',
81
91
  avatarOverflow: '{count} more',
82
92
  avatarPeople: '{count} people',
83
93
  uploadDrop: 'Drop files here or',
94
+ uploadLimits: 'Up to {limit} each',
95
+ uploadAccepts: 'Accepts {types}',
96
+ uploadSelected: 'Selected files',
97
+ uploadQueued: 'Ready to upload',
98
+ uploadSingle: 'Only one file can be uploaded at a time',
84
99
  uploadBrowse: 'Browse files',
85
100
  uploadRemove: 'Remove {name}',
86
101
  uploadTooLarge: '{name} is larger than {limit}',
@@ -1 +1 @@
1
- {"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistDue","activityEmpty","avatarOverflow","avatarPeople","uploadDrop","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","orgExpand","orgCollapse","orgReports","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"AAAA;AACA;AAIA;;;;;UAMaA,iBAAAA,GAAoB;IAC7BC,OAAAA,EAAS,SAAA;IACTC,aAAAA,EAAe,kBAAA;IACfC,SAAAA,EAAW,mCAAA;IACXC,aAAAA,EAAe,0BAAA;IACfC,SAAAA,EAAW,4DAAA;IACXC,KAAAA,EAAO,WAAA;IACPC,oBAAAA,EAAsB,wBAAA;IACtBC,gBAAAA,EAAkB,wDAAA;IAClBC,mBAAAA,EAAqB,cAAA;IACrBC,eAAAA,EAAiB,gCAAA;IACjBC,WAAAA,EAAa,uCAAA;IACbC,oBAAAA,EAAsB,uCAAA;IACtBC,OAAAA,EAAS,YAAA;IACTC,SAAAA,EAAW,cAAA;IACXC,SAAAA,EAAW,WAAA;IACXC,eAAAA,EAAiB,sBAAA;IACjBC,aAAAA,EAAe,SAAA;IACfC,aAAAA,EAAe,SAAA;IACfC,YAAAA,EAAc,SAAA;IACdC,UAAAA,EAAY,aAAA;IACZC,aAAAA,EAAe,QAAA;IACfC,WAAAA,EAAa,kBAAA;IACbC,cAAAA,EAAgB,YAAA;IAChBC,WAAAA,EAAa,QAAA;IACbC,aAAAA,EAAe,UAAA;IACfC,SAAAA,EAAW,eAAA;IACXC,cAAAA,EAAgB,WAAA;IAChBC,YAAAA,EAAc,kBAAA;IACdC,iBAAAA,EAAmB,cAAA;IACnBC,cAAAA,EAAgB,iBAAA;IAChBC,cAAAA,EAAgB,gBAAA;IAChBC,WAAAA,EAAa,OAAA;IACbC,cAAAA,EAAgB,UAAA;IAChBC,WAAAA,EAAa,OAAA;IACbC,WAAAA,EAAa,eAAA;IACbC,eAAAA,EAAiB,eAAA;IACjBC,WAAAA,EAAa,WAAA;IACbC,cAAAA,EAAgB,kCAAA;IAChBC,UAAAA,EAAY,UAAA;IACZC,QAAAA,EAAU,QAAA;IACVC,WAAAA,EAAa,gBAAA;IACbC,YAAAA,EAAc,aAAA;IACdC,SAAAA,EAAW,UAAA;IACXC,SAAAA,EAAW,iBAAA;IACXC,gBAAAA,EAAkB,aAAA;IAClBC,MAAAA,EAAQ,cAAA;IACRC,aAAAA,EAAe,YAAA;IACfC,QAAAA,EAAU,WAAA;IACVC,OAAAA,EAAS,UAAA;IACTC,IAAAA,EAAM,OAAA;IACNC,IAAAA,EAAM,IAAA;IACNC,OAAAA,EAAS,QAAA;IACTC,MAAAA,EAAQ,QAAA;IACRC,OAAAA,EAAS,OAAA;IACTC,aAAAA,EAAe,wBAAA;IACfC,gBAAAA,EAAkB,iBAAA;IAClBC,aAAAA,EAAe,SAAA;IACfC,aAAAA,EAAe,cAAA;IACfC,YAAAA,EAAc,kBAAA;IACdC,aAAAA,EAAe,gBAAA;IACfC,eAAAA,EAAiB,kBAAA;IACjBC,YAAAA,EAAc,0BAAA;IACdC,WAAAA,EAAa,qCAAA;IACbC,UAAAA,EAAY,aAAA;IACZC,YAAAA,EAAc,WAAA;IACdC,SAAAA,EAAW,mBAAA;IACXC,WAAAA,EAAa,cAAA;IACbC,SAAAA,EAAW,0BAAA;IACXC,iBAAAA,EAAmB,4BAAA;IACnBC,cAAAA,EAAgB,OAAA;IAChBC,YAAAA,EAAc,KAAA;IACdC,aAAAA,EAAe,iBAAA;IACfC,cAAAA,EAAgB,cAAA;IAChBC,YAAAA,EAAc,gBAAA;IACdC,UAAAA,EAAY,oBAAA;IACZC,YAAAA,EAAc,cAAA;IACdC,YAAAA,EAAc,eAAA;IACdC,cAAAA,EAAgB,+BAAA;IAChBC,eAAAA,EAAiB,qCAAA;IACjBC,eAAAA,EAAiB,WAAA;IACjBC,UAAAA,EAAY,UAAA;IACZC,YAAAA,EAAc,eAAA;IACdC,eAAAA,EAAiB,SAAA;IACjBC,eAAAA,EAAiB,mBAAA;IACjBC,gBAAAA,EAAkB,UAAA;IAClBC,gBAAAA,EAAkB,UAAA;IAClBC,eAAAA,EAAiB,SAAA;IACjBC,aAAAA,EAAe,gBAAA;IACfC,SAAAA,EAAW,eAAA;IACXC,WAAAA,EAAa,iBAAA;IACbC,UAAAA,EAAY,iBAAA;IACZC,aAAAA,EAAe,SAAA;IACfC,YAAAA,EAAc,aAAA;IACdC,WAAAA,EAAa,8BAAA;IACbC,cAAAA,EAAgB;AACpB;AAQA;;;;;IAMO,SAASC,qBAAAA,CAAsBC,OAA0B,EAAA;AAC5D,IAAA,MAAMC,QAAAA,GAAWD,OAAAA,CAAQE,UAAU,CAACC,OAAO;AAC3C,IAAA,MAAMC,MAAAA,GAA4B;AAAE,QAAA,GAAGrG;AAAkB,KAAA;IACzD,IAAI,OAAOkG,aAAa,QAAA,IAAYA,QAAAA,KAAa,QAAQI,KAAAA,CAAMC,OAAO,CAACL,QAAAA,CAAAA,EAAW,OAAOG,MAAAA;IAEzF,KAAK,MAAM,CAACG,IAAAA,EAAMC,KAAAA,CAAM,IAAIC,MAAAA,CAAOC,OAAO,CAACT,QAAAA,CAAAA,CAAsC;QAC7E,IAAIM,IAAAA,IAAQxG,qBAAqB,OAAOyG,KAAAA,KAAU,UAAUJ,MAAM,CAACG,KAA6B,GAAGC,KAAAA;AACvG,IAAA;IAEA,OAAOJ,MAAAA;AACX;AAEA,qIACO,SAASO,UAAAA,CAAWC,IAAY,EAAEC,MAAAA,GAA0C,EAAE,EAAA;AACjF,IAAA,OAAOD,IAAAA,CAAKE,OAAO,CAAC,YAAA,EAAc,CAACC,WAAAA,EAAaR,IAAAA,GAAkBA,IAAAA,IAAQM,MAAAA,GAASG,MAAAA,CAAOH,MAAM,CAACN,KAAK,CAAA,GAAIQ,WAAAA,CAAAA;AAC9G;;"}
1
+ {"version":3,"file":"foundationStrings.js","sources":["../../../foundation/foundationStrings.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\n\n/**\n * Every piece of text the foundation components say themselves, as opposed to text a screen author or a bound query\n * supplies. Nothing is hard-coded in a component (spec Part B 1.5): a component reads its text from here, merged with\n * the `strings` property of the element, so an application localizes by supplying a table - and a bound string\n * (a `{name}` placeholder is replaced by the values the component passes) arrives the same way any other property does.\n */\nexport const foundationStrings = {\n loading: 'Loading',\n emptyHeadline: 'Nothing here yet',\n emptyHint: 'There is nothing to show for now.',\n errorHeadline: 'This could not be loaded',\n errorHint: 'Something went wrong while loading. Try again in a moment.',\n retry: 'Try again',\n noPermissionHeadline: 'You do not have access',\n noPermissionHint: 'Ask an administrator to grant you access to {subject}.',\n noPermissionSubject: 'this content',\n partialHeadline: 'Some parts could not be loaded',\n partialHint: 'The unavailable parts are: {regions}.',\n disabledNoPermission: 'You do not have permission to do this',\n trendUp: 'up {value}',\n trendDown: 'down {value}',\n trendFlat: 'unchanged',\n trendComparison: 'compared to {period}',\n statusSuccess: 'Success',\n statusWarning: 'Warning',\n statusDanger: 'Problem',\n statusInfo: 'Information',\n statusNeutral: 'Status',\n chartNoData: 'No data to chart',\n chartDataTable: 'Chart data',\n chartSeries: 'Series',\n chartCategory: 'Category',\n filterAdd: 'Add condition',\n filterAddGroup: 'Add group',\n filterRemove: 'Remove condition',\n filterRemoveGroup: 'Remove group',\n filterMatchAll: 'Match all (AND)',\n filterMatchAny: 'Match any (OR)',\n filterField: 'Field',\n filterOperator: 'Operator',\n filterValue: 'Value',\n filterClear: 'Clear filters',\n filterCondition: 'Condition {n}',\n filterGroup: 'Group {n}',\n filterNoFields: 'There are no fields to filter on',\n opContains: 'contains',\n opEquals: 'equals',\n opNotEquals: 'does not equal',\n opStartsWith: 'starts with',\n opIsEmpty: 'is empty',\n opGreater: 'is greater than',\n opGreaterOrEqual: 'is at least',\n opLess: 'is less than',\n opLessOrEqual: 'is at most',\n opBefore: 'is before',\n opAfter: 'is after',\n opOn: 'is on',\n opIs: 'is',\n opIsNot: 'is not',\n opTrue: 'is yes',\n opFalse: 'is no',\n filterSummary: '{count} active filters',\n filterSummaryOne: '1 active filter',\n columnsChoose: 'Columns',\n columnsLocked: 'always shown',\n columnsReset: 'Show all columns',\n columnsMoveUp: 'Move {name} up',\n columnsMoveDown: 'Move {name} down',\n columnsShown: '{shown} of {total} shown',\n columnsNone: 'There are no columns to choose from',\n viewsLabel: 'Saved views',\n viewsDefault: 'All items',\n viewsSave: 'Save current view',\n viewsManage: 'Manage views',\n viewsNone: 'There are no saved views',\n checklistProgress: '{done} of {total} complete',\n checklistOwner: 'Owner',\n checklistOverdue: 'Overdue',\n checklistDone: 'Done',\n checklistOpen: 'Open',\n checklistItemProgress: 'Progress of {title}',\n checklistNone: 'This checklist has no tasks',\n checklistDue: 'Due',\n activityEmpty: 'No activity yet',\n activityComment: 'Comment',\n activityChange: 'Change',\n activityStatus: 'Status',\n activitySystem: 'System',\n activityBy: 'by {actor}',\n avatarOverflow: '{count} more',\n avatarPeople: '{count} people',\n uploadDrop: 'Drop files here or',\n uploadLimits: 'Up to {limit} each',\n uploadAccepts: 'Accepts {types}',\n uploadSelected: 'Selected files',\n uploadQueued: 'Ready to upload',\n uploadSingle: 'Only one file can be uploaded at a time',\n uploadBrowse: 'Browse files',\n uploadRemove: 'Remove {name}',\n uploadTooLarge: '{name} is larger than {limit}',\n uploadWrongType: '{name} is not an accepted file type',\n uploadUploading: 'Uploading',\n uploadDone: 'Uploaded',\n uploadFailed: 'Upload failed',\n approvalPending: 'Pending',\n approvalCurrent: 'Awaiting decision',\n approvalApproved: 'Approved',\n approvalRejected: 'Rejected',\n approvalSkipped: 'Skipped',\n approvalChain: 'Approval chain',\n orgExpand: 'Expand {name}',\n orgCollapse: 'Collapse {name}',\n orgReports: '{count} reports',\n matrixAllowed: 'Allowed',\n matrixDenied: 'Not allowed',\n matrixGrant: 'Grant {permission} to {role}',\n matrixReadOnly: 'Read-only',\n} as const;\n\n/** The name of one of the foundation strings. */\nexport type FoundationStringName = keyof typeof foundationStrings;\n\n/** The text table a foundation component works with. */\nexport type FoundationStrings = Record<FoundationStringName, string>;\n\n/**\n * The foundation strings with the element's own `strings` property laid over them.\n *\n * Only string values of known names are taken, so a typo in an application's table falls back to the default text\n * rather than rendering nothing.\n */\nexport function readFoundationStrings(element: ExternalComponent): FoundationStrings {\n const supplied = element.properties.strings;\n const result: FoundationStrings = { ...foundationStrings };\n if (typeof supplied !== 'object' || supplied === null || Array.isArray(supplied)) return result;\n\n for (const [name, value] of Object.entries(supplied as Record<string, unknown>)) {\n if (name in foundationStrings && typeof value === 'string') result[name as FoundationStringName] = value;\n }\n\n return result;\n}\n\n/** Replaces each `{name}` in a string with the value of the same name, leaving an unknown placeholder visible rather than blank. */\nexport function formatText(text: string, values: Record<string, string | number> = {}): string {\n return text.replace(/\\{(\\w+)\\}/g, (placeholder, name: string) => (name in values ? String(values[name]) : placeholder));\n}\n"],"names":["foundationStrings","loading","emptyHeadline","emptyHint","errorHeadline","errorHint","retry","noPermissionHeadline","noPermissionHint","noPermissionSubject","partialHeadline","partialHint","disabledNoPermission","trendUp","trendDown","trendFlat","trendComparison","statusSuccess","statusWarning","statusDanger","statusInfo","statusNeutral","chartNoData","chartDataTable","chartSeries","chartCategory","filterAdd","filterAddGroup","filterRemove","filterRemoveGroup","filterMatchAll","filterMatchAny","filterField","filterOperator","filterValue","filterClear","filterCondition","filterGroup","filterNoFields","opContains","opEquals","opNotEquals","opStartsWith","opIsEmpty","opGreater","opGreaterOrEqual","opLess","opLessOrEqual","opBefore","opAfter","opOn","opIs","opIsNot","opTrue","opFalse","filterSummary","filterSummaryOne","columnsChoose","columnsLocked","columnsReset","columnsMoveUp","columnsMoveDown","columnsShown","columnsNone","viewsLabel","viewsDefault","viewsSave","viewsManage","viewsNone","checklistProgress","checklistOwner","checklistOverdue","checklistDone","checklistOpen","checklistItemProgress","checklistNone","checklistDue","activityEmpty","activityComment","activityChange","activityStatus","activitySystem","activityBy","avatarOverflow","avatarPeople","uploadDrop","uploadLimits","uploadAccepts","uploadSelected","uploadQueued","uploadSingle","uploadBrowse","uploadRemove","uploadTooLarge","uploadWrongType","uploadUploading","uploadDone","uploadFailed","approvalPending","approvalCurrent","approvalApproved","approvalRejected","approvalSkipped","approvalChain","orgExpand","orgCollapse","orgReports","matrixAllowed","matrixDenied","matrixGrant","matrixReadOnly","readFoundationStrings","element","supplied","properties","strings","result","Array","isArray","name","value","Object","entries","formatText","text","values","replace","placeholder","String"],"mappings":"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"}
@@ -18,6 +18,15 @@ export * from './columnModel';
18
18
  export * from './ColumnChooser';
19
19
  export * from './viewModel';
20
20
  export * from './SavedViewsMenu';
21
+ export * from './checklistModel';
22
+ export * from './ChecklistSection';
23
+ export * from './activityModel';
24
+ export * from './ActivityFeed';
25
+ export * from './avatarModel';
26
+ export * from './AvatarStack';
27
+ export * from './uploadModel';
28
+ export * from './FileUploaderHandler';
29
+ export * from './FileUploader';
21
30
  export * from './foundationDescriptors';
22
31
  export * from './foundationComponentMetadata';
23
32
  export * from './foundationSamples';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../foundation/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../foundation/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -18,6 +18,15 @@ export * from './columnModel';
18
18
  export * from './ColumnChooser';
19
19
  export * from './viewModel';
20
20
  export * from './SavedViewsMenu';
21
+ export * from './checklistModel';
22
+ export * from './ChecklistSection';
23
+ export * from './activityModel';
24
+ export * from './ActivityFeed';
25
+ export * from './avatarModel';
26
+ export * from './AvatarStack';
27
+ export * from './uploadModel';
28
+ export * from './FileUploaderHandler';
29
+ export * from './FileUploader';
21
30
  export * from './foundationDescriptors';
22
31
  export * from './foundationComponentMetadata';
23
32
  export * from './foundationSamples';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../foundation/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../foundation/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,31 @@
1
+ export declare enum UploadStatus {
2
+ Queued = "queued",
3
+ Uploading = "uploading",
4
+ Done = "done",
5
+ Failed = "failed"
6
+ }
7
+ export interface UploadRules {
8
+ accept: string;
9
+ maximumBytes: number;
10
+ multiple: boolean;
11
+ }
12
+ export interface SelectedFile {
13
+ name: string;
14
+ size: number;
15
+ type: string;
16
+ }
17
+ export declare enum UploadRefusal {
18
+ WrongType = "wrongType",
19
+ TooLarge = "tooLarge",
20
+ Single = "single"
21
+ }
22
+ export declare function matchesAccept(file: SelectedFile, accept: string): boolean;
23
+ export declare function checkSelection<T extends SelectedFile>(files: T[], rules: UploadRules, alreadySelected?: number): {
24
+ accepted: T[];
25
+ refused: {
26
+ file: T;
27
+ reason: UploadRefusal;
28
+ }[];
29
+ };
30
+ export declare function formatBytes(bytes: number, locale: string): string;
31
+ //# sourceMappingURL=uploadModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadModel.d.ts","sourceRoot":"","sources":["../../../foundation/uploadModel.ts"],"names":[],"mappings":"AAIA,oBAAY,YAAY;IACpB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;CACpB;AAGD,MAAM,WAAW,WAAW;IAExB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAGD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAGD,oBAAY,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;CACpB;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOzE;AAGD,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,SAAI,GAAG;IAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,EAAE,CAAA;CAAE,CAY5K;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjE"}
@@ -0,0 +1,65 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /** Where a file is in being uploaded. */ var UploadStatus = /*#__PURE__*/ function(UploadStatus) {
4
+ UploadStatus["Queued"] = "queued";
5
+ UploadStatus["Uploading"] = "uploading";
6
+ UploadStatus["Done"] = "done";
7
+ UploadStatus["Failed"] = "failed";
8
+ return UploadStatus;
9
+ }({});
10
+ /** Why a file was refused. */ var UploadRefusal = /*#__PURE__*/ function(UploadRefusal) {
11
+ UploadRefusal["WrongType"] = "wrongType";
12
+ UploadRefusal["TooLarge"] = "tooLarge";
13
+ UploadRefusal["Single"] = "single";
14
+ return UploadRefusal;
15
+ }({});
16
+ /** Whether a file matches an `accept` list; an empty list accepts everything, and matching ignores case. */ function matchesAccept(file, accept) {
17
+ const patterns = accept.split(',').map((pattern)=>pattern.trim().toLowerCase()).filter((pattern)=>pattern.length > 0);
18
+ if (patterns.length === 0) return true;
19
+ const name = file.name.toLowerCase();
20
+ const type = file.type.toLowerCase();
21
+ return patterns.some((pattern)=>pattern.startsWith('.') ? name.endsWith(pattern) : pattern.endsWith('/*') ? type.startsWith(pattern.slice(0, -1)) : type === pattern);
22
+ }
23
+ /** Sorts a selection into the files to take and the reasons for refusing the others. Only the first is taken when one file is allowed. */ function checkSelection(files, rules, alreadySelected = 0) {
24
+ const accepted = [];
25
+ const refused = [];
26
+ for (const file of files){
27
+ if (!matchesAccept(file, rules.accept)) refused.push({
28
+ file,
29
+ reason: "wrongType"
30
+ });
31
+ else if (rules.maximumBytes > 0 && file.size > rules.maximumBytes) refused.push({
32
+ file,
33
+ reason: "tooLarge"
34
+ });
35
+ else if (!rules.multiple && alreadySelected + accepted.length >= 1) refused.push({
36
+ file,
37
+ reason: "single"
38
+ });
39
+ else accepted.push(file);
40
+ }
41
+ return {
42
+ accepted,
43
+ refused
44
+ };
45
+ }
46
+ /** A file size in the largest unit that keeps it under 1024, for the locale. */ function formatBytes(bytes, locale) {
47
+ const units = [
48
+ 'B',
49
+ 'KB',
50
+ 'MB',
51
+ 'GB'
52
+ ];
53
+ let value = bytes;
54
+ let unit = 0;
55
+ while(value >= 1024 && unit < units.length - 1){
56
+ value /= 1024;
57
+ unit++;
58
+ }
59
+ return `${new Intl.NumberFormat(locale, {
60
+ maximumFractionDigits: unit === 0 ? 0 : 1
61
+ }).format(value)} ${units[unit]}`;
62
+ }
63
+
64
+ export { UploadRefusal, UploadStatus, checkSelection, formatBytes, matchesAccept };
65
+ //# sourceMappingURL=uploadModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadModel.js","sources":["../../../foundation/uploadModel.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/** Where a file is in being uploaded. */\nexport enum UploadStatus {\n Queued = 'queued',\n Uploading = 'uploading',\n Done = 'done',\n Failed = 'failed',\n}\n\n/** The rules a selection is checked against before anything is sent. */\nexport interface UploadRules {\n /** A comma-separated `accept` list: extensions (`.pdf`), MIME types (`image/png`) and wildcards (`image/*`). */\n accept: string;\n maximumBytes: number;\n multiple: boolean;\n}\n\n/** What the checker needs of a file. */\nexport interface SelectedFile {\n name: string;\n size: number;\n type: string;\n}\n\n/** Why a file was refused. */\nexport enum UploadRefusal {\n WrongType = 'wrongType',\n TooLarge = 'tooLarge',\n Single = 'single',\n}\n\n/** Whether a file matches an `accept` list; an empty list accepts everything, and matching ignores case. */\nexport function matchesAccept(file: SelectedFile, accept: string): boolean {\n const patterns = accept.split(',').map(pattern => pattern.trim().toLowerCase()).filter(pattern => pattern.length > 0);\n if (patterns.length === 0) return true;\n\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return patterns.some(pattern => pattern.startsWith('.') ? name.endsWith(pattern) : pattern.endsWith('/*') ? type.startsWith(pattern.slice(0, -1)) : type === pattern);\n}\n\n/** Sorts a selection into the files to take and the reasons for refusing the others. Only the first is taken when one file is allowed. */\nexport function checkSelection<T extends SelectedFile>(files: T[], rules: UploadRules, alreadySelected = 0): { accepted: T[]; refused: { file: T; reason: UploadRefusal }[] } {\n const accepted: T[] = [];\n const refused: { file: T; reason: UploadRefusal }[] = [];\n\n for (const file of files) {\n if (!matchesAccept(file, rules.accept)) refused.push({ file, reason: UploadRefusal.WrongType });\n else if (rules.maximumBytes > 0 && file.size > rules.maximumBytes) refused.push({ file, reason: UploadRefusal.TooLarge });\n else if (!rules.multiple && alreadySelected + accepted.length >= 1) refused.push({ file, reason: UploadRefusal.Single });\n else accepted.push(file);\n }\n\n return { accepted, refused };\n}\n\n/** A file size in the largest unit that keeps it under 1024, for the locale. */\nexport function formatBytes(bytes: number, locale: string): string {\n const units = ['B', 'KB', 'MB', 'GB'];\n let value = bytes;\n let unit = 0;\n while (value >= 1024 && unit < units.length - 1) { value /= 1024; unit++; }\n return `${new Intl.NumberFormat(locale, { maximumFractionDigits: unit === 0 ? 0 : 1 }).format(value)} ${units[unit]}`;\n}\n"],"names":["UploadStatus","UploadRefusal","matchesAccept","file","accept","patterns","split","map","pattern","trim","toLowerCase","filter","length","name","type","some","startsWith","endsWith","slice","checkSelection","files","rules","alreadySelected","accepted","refused","push","reason","maximumBytes","size","multiple","formatBytes","bytes","locale","units","value","unit","Intl","NumberFormat","maximumFractionDigits","format"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -55,7 +55,7 @@ export { LayoutModeSwitcher } from './shell/LayoutModeSwitcher.js';
55
55
  export { formatText, foundationStrings, readFoundationStrings } from './foundation/foundationStrings.js';
56
56
  export { ComponentState, componentStates, readComponentState } from './foundation/ComponentState.js';
57
57
  export { PermissionRule, readPermissionRule } from './foundation/PermissionRule.js';
58
- export { NumberFormat, formatDate, formatNumber, isRightToLeft, readLocale, readNumberFormat } from './foundation/formatting.js';
58
+ export { NumberFormat, formatDate, formatDay, formatNumber, isRightToLeft, readLocale, readNumberFormat } from './foundation/formatting.js';
59
59
  export { FoundationIcon, isFoundationIcon } from './foundation/FoundationIcon.js';
60
60
  export { ActionButton } from './foundation/ActionButton.js';
61
61
  export { EmptyStateView, FoundationFrame } from './foundation/StateFrame.js';
@@ -72,6 +72,15 @@ export { moveColumn, readColumns, toggleColumn, visibleColumnIds } from './found
72
72
  export { ColumnChooser } from './foundation/ColumnChooser.js';
73
73
  export { readViews } from './foundation/viewModel.js';
74
74
  export { SavedViewsMenu, savedViewActionOutput } from './foundation/SavedViewsMenu.js';
75
+ export { completed, doneTaskIds, isOverdue, readChecklist, toggleTask } from './foundation/checklistModel.js';
76
+ export { ChecklistSection } from './foundation/ChecklistSection.js';
77
+ export { ActivityKind, dayOf, groupByDay, readActivity } from './foundation/activityModel.js';
78
+ export { ActivityFeed } from './foundation/ActivityFeed.js';
79
+ export { initialsOf, readPeople, visiblePeople } from './foundation/avatarModel.js';
80
+ export { AvatarStack } from './foundation/AvatarStack.js';
81
+ export { UploadRefusal, UploadStatus, checkSelection, formatBytes, matchesAccept } from './foundation/uploadModel.js';
82
+ export { FileUploaderHandlerProvider, useFileUploaderHandler } from './foundation/FileUploaderHandler.js';
83
+ export { FileUploader } from './foundation/FileUploader.js';
75
84
  export { bindable, foundationDescriptors, list, standardStateProperties } from './foundation/foundationDescriptors.js';
76
85
  export { foundationComponentMetadata } from './foundation/foundationComponentMetadata.js';
77
86
  export { foundationElement, foundationSamples } from './foundation/foundationSamples.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { SceneElement, type EffectiveConfiguration } from '@cratis/scene.model';
2
+ import { DialogTemplate, SceneElement, type EffectiveConfiguration } from '@cratis/scene.model';
3
3
  import { BindingResolver } from '@cratis/scene.engine';
4
4
  import { ComponentRegistry, SceneHistory, SceneNavigationContextValue, SceneNavigationModel } from '@cratis/scene.react';
5
5
  import { ApplicationDocument } from './ApplicationDocument';
@@ -15,7 +15,10 @@ export interface ApplicationHostProps {
15
15
  queryResults?: Record<string, unknown>;
16
16
  renderScreen?(element: SceneElement, configuration: EffectiveConfiguration | undefined, navigation: SceneNavigationContextValue): ReactNode;
17
17
  renderDialog?(navigation: SceneNavigationContextValue): ReactNode;
18
+ renderDialogTemplate?(template: DialogTemplate, content: SceneElement, navigation: SceneNavigationContextValue): ReactNode;
19
+ scope?(navigation: SceneNavigationContextValue, children: ReactNode): ReactNode;
20
+ layoutConfigStorage?: Storage | null;
18
21
  children?: ReactNode;
19
22
  }
20
- export declare function ApplicationHost({ application, composition, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, children }: ApplicationHostProps): import("react").JSX.Element;
23
+ export declare function ApplicationHost({ application, composition, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, renderDialogTemplate, scope, layoutConfigStorage, children }: ApplicationHostProps): import("react").JSX.Element;
21
24
  //# sourceMappingURL=ApplicationHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationHost.d.ts","sourceRoot":"","sources":["../../../preview-host/ApplicationHost.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACH,iBAAiB,EAAoB,YAAY,EAAE,2BAA2B,EAAE,oBAAoB,EAGvG,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAqF,MAAM,sBAAsB,CAAC;AAE7I,MAAM,WAAW,oBAAoB;IAEjC,WAAW,EAAE,mBAAmB,CAAC;IAGjC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAGjC,eAAe,EAAE,oBAAoB,CAAC;IAEtC,QAAQ,EAAE,iBAAiB,CAAC;IAG5B,aAAa,EAAE,MAAM,CAAC;IAGtB,OAAO,CAAC,EAAE,YAAY,CAAC;IAGvB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQvC,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,GAAG,SAAS,EAAE,UAAU,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAM5I,YAAY,CAAC,CAAC,UAAU,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAGlE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AASD,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,WAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BAkD3N"}
1
+ {"version":3,"file":"ApplicationHost.d.ts","sourceRoot":"","sources":["../../../preview-host/ApplicationHost.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACH,iBAAiB,EAAoB,YAAY,EAAE,2BAA2B,EAAE,oBAAoB,EAGvG,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAqF,MAAM,sBAAsB,CAAC;AAE7I,MAAM,WAAW,oBAAoB;IAEjC,WAAW,EAAE,mBAAmB,CAAC;IAGjC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAGjC,eAAe,EAAE,oBAAoB,CAAC;IAEtC,QAAQ,EAAE,iBAAiB,CAAC;IAG5B,aAAa,EAAE,MAAM,CAAC;IAGtB,OAAO,CAAC,EAAE,YAAY,CAAC;IAGvB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQvC,YAAY,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,GAAG,SAAS,EAAE,UAAU,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAM5I,YAAY,CAAC,CAAC,UAAU,EAAE,2BAA2B,GAAG,SAAS,CAAC;IASlE,oBAAoB,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAS3H,KAAK,CAAC,CAAC,UAAU,EAAE,2BAA2B,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAMhF,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAGrC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AASD,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,WAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAA0B,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BA8DpR"}
@@ -1,6 +1,6 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useMemo } from 'react';
3
- import { createMemorySceneHistory, collectOutletOwners, navigationDestinations, sceneRoutesFrom, useSceneHistoryNavigation, sliceDialogParameters, SceneElementView, SceneNavigationProvider, SceneOutletContext, SceneNavigationModelProvider, SliceDialogView } from '@cratis/scene.react';
3
+ import { createMemorySceneHistory, collectOutletOwners, navigationDestinations, sceneRoutesFrom, useSceneHistoryNavigation, sliceDialogParameters, SceneElementView, SliceDialogView, SceneNavigationProvider, SceneOutletContext, SceneNavigationModelProvider } from '@cratis/scene.react';
4
4
  import { LayoutConfigProvider } from '../configuration/LayoutConfigProvider.js';
5
5
  import { previewComponents } from './PreviewTemplate.js';
6
6
  import { composeOutletScreen, collectDestinations, composeApplicationScreen, composeDialog } from './composeApplication.js';
@@ -11,7 +11,7 @@ import { composeOutletScreen, collectDestinations, composeApplicationScreen, com
11
11
  * topbar and sidebar regions, every destination the document and the navigation lead to routed, and the dialog a toolbar slice
12
12
  * button or a dialog destination opened shown over it - one place for all of it (spec PRV9), so a behaviour that differs between
13
13
  * the two hosts is a bug in the host, not a second implementation.
14
- */ function ApplicationHost({ application, composition = {}, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, children }) {
14
+ */ function ApplicationHost({ application, composition = {}, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, renderDialogTemplate, scope, layoutConfigStorage = null, children }) {
15
15
  const [memoryHistory] = useState(()=>createMemorySceneHistory());
16
16
  const registry = useMemo(()=>({
17
17
  ...previewComponents,
@@ -65,13 +65,46 @@ import { composeOutletScreen, collectDestinations, composeApplicationScreen, com
65
65
  const dialogTemplate = navigation.currentDialog ? application.dialogTemplates?.find((candidate)=>candidate.name === navigation.currentDialog) : undefined;
66
66
  const sliceDialog = !dialogTemplate && navigation.currentDialog && sliceDialogParameters(navigation.currentDialogParameters) !== undefined;
67
67
  const dialogName = sliceDialogParameters(navigation.currentDialogParameters)?.title ?? navigation.currentDialog;
68
- const drawn = composed ? renderScreen?.(composed.element, composed.configuration, navigation) ?? /*#__PURE__*/ jsx(SceneElementView, {
69
- element: composed.element,
70
- registry: registry,
71
- resolveBinding: resolveBinding,
72
- queryResults: queryResults,
73
- configuration: composed.configuration
74
- }) : null;
68
+ const dialogContent = dialogTemplate ? composeDialog(application, dialogTemplate, composition) : undefined;
69
+ const body = /*#__PURE__*/ jsxs(Fragment, {
70
+ children: [
71
+ /*#__PURE__*/ jsx("div", {
72
+ "data-scene-outlet": "primary",
73
+ "data-scene-url": navigation.currentUrl,
74
+ "data-scene-screen": navigation.primaryScreen,
75
+ children: composed && /*#__PURE__*/ jsx(Drawn, {
76
+ children: renderScreen ? ()=>renderScreen(composed.element, composed.configuration, navigation) : ()=>/*#__PURE__*/ jsx(SceneElementView, {
77
+ element: composed.element,
78
+ registry: registry,
79
+ resolveBinding: resolveBinding,
80
+ queryResults: queryResults,
81
+ configuration: composed.configuration
82
+ })
83
+ })
84
+ }),
85
+ dialogTemplate && dialogContent && (renderDialogTemplate ? /*#__PURE__*/ jsx(Drawn, {
86
+ children: ()=>renderDialogTemplate(dialogTemplate, dialogContent, navigation)
87
+ }) : /*#__PURE__*/ jsx("div", {
88
+ role: "dialog",
89
+ "aria-modal": "true",
90
+ "aria-label": dialogName,
91
+ "data-scene-dialog": navigation.currentDialog,
92
+ children: /*#__PURE__*/ jsx(SceneElementView, {
93
+ element: dialogContent,
94
+ registry: registry,
95
+ resolveBinding: resolveBinding,
96
+ queryResults: queryResults
97
+ })
98
+ })),
99
+ sliceDialog && /*#__PURE__*/ jsx("div", {
100
+ role: "dialog",
101
+ "aria-modal": "true",
102
+ "aria-label": dialogName,
103
+ "data-scene-dialog": navigation.currentDialog,
104
+ children: renderDialog?.(navigation) ?? /*#__PURE__*/ jsx(SliceDialogView, {})
105
+ })
106
+ ]
107
+ });
75
108
  return /*#__PURE__*/ jsx(SceneNavigationProvider, {
76
109
  value: navigation,
77
110
  children: /*#__PURE__*/ jsx(SceneOutletContext.Provider, {
@@ -79,26 +112,9 @@ import { composeOutletScreen, collectDestinations, composeApplicationScreen, com
79
112
  children: /*#__PURE__*/ jsx(SceneNavigationModelProvider, {
80
113
  model: navigationModel,
81
114
  children: /*#__PURE__*/ jsxs(LayoutConfigProvider, {
82
- storage: null,
115
+ storage: layoutConfigStorage,
83
116
  children: [
84
- /*#__PURE__*/ jsx("div", {
85
- "data-scene-outlet": "primary",
86
- "data-scene-url": navigation.currentUrl,
87
- "data-scene-screen": navigation.primaryScreen,
88
- children: drawn
89
- }),
90
- (dialogTemplate || sliceDialog) && /*#__PURE__*/ jsx("div", {
91
- role: "dialog",
92
- "aria-modal": "true",
93
- "aria-label": dialogName,
94
- "data-scene-dialog": navigation.currentDialog,
95
- children: dialogTemplate ? /*#__PURE__*/ jsx(SceneElementView, {
96
- element: composeDialog(application, dialogTemplate, composition),
97
- registry: registry,
98
- resolveBinding: resolveBinding,
99
- queryResults: queryResults
100
- }) : renderDialog?.(navigation) ?? /*#__PURE__*/ jsx(SliceDialogView, {})
101
- }),
117
+ scope ? scope(navigation, body) : body,
102
118
  children
103
119
  ]
104
120
  })
@@ -106,6 +122,11 @@ import { composeOutletScreen, collectDestinations, composeApplicationScreen, com
106
122
  })
107
123
  });
108
124
  }
125
+ /** Calls what a host draws as part of this component, so a hook it uses runs under the providers the host put in scope. */ function Drawn({ children }) {
126
+ return /*#__PURE__*/ jsx(Fragment, {
127
+ children: children()
128
+ });
129
+ }
109
130
 
110
131
  export { ApplicationHost };
111
132
  //# sourceMappingURL=ApplicationHost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationHost.js","sources":["../../../preview-host/ApplicationHost.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, useMemo, useState } from 'react';\nimport { SceneElement, type EffectiveConfiguration } from '@cratis/scene.model';\nimport { BindingResolver, BindingScope } from '@cratis/scene.engine';\nimport {\n ComponentRegistry, SceneElementView, SceneHistory, SceneNavigationContextValue, SceneNavigationModel, SceneNavigationModelProvider,\n SceneNavigationProvider, SceneOutletContext, SliceDialogView, collectOutletOwners, createMemorySceneHistory, navigationDestinations,\n sceneRoutesFrom, sliceDialogParameters, useSceneHistoryNavigation,\n} from '@cratis/scene.react';\nimport { LayoutConfigProvider } from '../configuration';\nimport { ApplicationDocument } from './ApplicationDocument';\nimport { previewComponents } from './PreviewTemplate';\nimport { CompositionOptions, collectDestinations, composeApplicationScreen, composeDialog, composeOutletScreen } from './composeApplication';\n\nexport interface ApplicationHostProps {\n /** The document the application is composed from. */\n application: ApplicationDocument;\n\n /** What the host decides about composition; Stage and the preview host differ only here. */\n composition?: CompositionOptions;\n\n /** The structure and navigation the shell's regions show and the items' destinations resolve against. */\n navigationModel: SceneNavigationModel;\n\n registry: ComponentRegistry;\n\n /** The screen shown first. */\n initialScreen: string;\n\n /** Where entries are recorded: the address bar for Stage, an in-memory history for a preview, which never touches the host's URL (PRV4). */\n history?: SceneHistory;\n\n /** What the screens' bindings resolve against. */\n resolveBinding?: BindingResolver;\n queryResults?: Record<string, unknown>;\n\n /**\n * Draws the composed screen. The default renders it with `SceneElementView`; Stage wraps it with its data and command scope.\n * @param element The composed screen.\n * @param configuration What the screen's templates were configured with.\n * @param navigation Where the user is.\n */\n renderScreen?(element: SceneElement, configuration: EffectiveConfiguration | undefined, navigation: SceneNavigationContextValue): ReactNode;\n\n /**\n * Draws what the open dialog shows when the document has no dialog template of that name - a toolbar slice button's task\n * dialog by default.\n */\n renderDialog?(navigation: SceneNavigationContextValue): ReactNode;\n\n /** Rendered inside the host's providers, after the application. */\n children?: ReactNode;\n}\n\n/**\n * The application as both Stage and the preview host run it: the shell composed for the screen on the page\n * (`composeApplicationScreen`), nested outlets holding the screens placed in them, the navigation model in scope for the shell's\n * topbar and sidebar regions, every destination the document and the navigation lead to routed, and the dialog a toolbar slice\n * button or a dialog destination opened shown over it - one place for all of it (spec PRV9), so a behaviour that differs between\n * the two hosts is a bug in the host, not a second implementation.\n */\nexport function ApplicationHost({ application, composition = {}, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, children }: ApplicationHostProps) {\n const [memoryHistory] = useState(() => createMemorySceneHistory());\n const registry = useMemo(() => ({ ...previewComponents, ...hostRegistry }), [hostRegistry]);\n const hostHistory = history ?? memoryHistory;\n const screens = application.screens;\n\n const outletScreens = useMemo(\n () => Object.fromEntries(screens.map(candidate => [candidate.name, composeOutletScreen(application, candidate, composition)])),\n [application, composition, screens]);\n const owners = useMemo(() => collectOutletOwners(outletScreens), [outletScreens]);\n const destinations = useMemo(\n () => [...collectDestinations(application), ...navigationDestinations(navigationModel.structure, navigationModel.navigation, navigationModel.screenFor)],\n [application, navigationModel]);\n const routes = useMemo(() => sceneRoutesFrom(screens.map(candidate => candidate.name), destinations), [destinations, screens]);\n const bindingScope = useMemo<BindingScope>(() => ({ queryResults }), [queryResults]);\n const navigation = useSceneHistoryNavigation(hostHistory, routes, initialScreen, bindingScope, owners, destinations);\n\n const screen = screens.find(candidate => candidate.name === navigation.primaryScreen) ?? screens.find(candidate => candidate.name === initialScreen) ?? screens[0];\n const composed = useMemo(() => screen ? composeApplicationScreen(application, screen, composition) : undefined, [application, composition, screen]);\n const outletContext = useMemo(() => ({ screens: outletScreens, registry }), [outletScreens, registry]);\n\n const dialogTemplate = navigation.currentDialog ? application.dialogTemplates?.find(candidate => candidate.name === navigation.currentDialog) : undefined;\n const sliceDialog = !dialogTemplate && navigation.currentDialog && sliceDialogParameters(navigation.currentDialogParameters) !== undefined;\n const dialogName = sliceDialogParameters(navigation.currentDialogParameters)?.title ?? navigation.currentDialog;\n\n const drawn = composed\n ? renderScreen?.(composed.element, composed.configuration, navigation)\n ?? <SceneElementView element={composed.element} registry={registry} resolveBinding={resolveBinding} queryResults={queryResults} configuration={composed.configuration} />\n : null;\n\n return (\n <SceneNavigationProvider value={navigation}>\n <SceneOutletContext.Provider value={outletContext}>\n <SceneNavigationModelProvider model={navigationModel}>\n {/* The shell reads its layout configuration from a provider; nothing is saved from a hosted application's own. */}\n <LayoutConfigProvider storage={null}>\n <div data-scene-outlet='primary' data-scene-url={navigation.currentUrl} data-scene-screen={navigation.primaryScreen}>{drawn}</div>\n {(dialogTemplate || sliceDialog) && (\n <div role='dialog' aria-modal='true' aria-label={dialogName} data-scene-dialog={navigation.currentDialog}>\n {dialogTemplate\n ? <SceneElementView element={composeDialog(application, dialogTemplate, composition)} registry={registry} resolveBinding={resolveBinding} queryResults={queryResults} />\n : renderDialog?.(navigation) ?? <SliceDialogView />}\n </div>\n )}\n {children}\n </LayoutConfigProvider>\n </SceneNavigationModelProvider>\n </SceneOutletContext.Provider>\n </SceneNavigationProvider>\n );\n}\n"],"names":["ApplicationHost","application","composition","navigationModel","registry","hostRegistry","initialScreen","history","resolveBinding","queryResults","renderScreen","renderDialog","children","memoryHistory","useState","createMemorySceneHistory","useMemo","previewComponents","hostHistory","screens","outletScreens","Object","fromEntries","map","candidate","name","composeOutletScreen","owners","collectOutletOwners","destinations","collectDestinations","navigationDestinations","structure","navigation","screenFor","routes","sceneRoutesFrom","bindingScope","useSceneHistoryNavigation","screen","find","primaryScreen","composed","composeApplicationScreen","undefined","outletContext","dialogTemplate","currentDialog","dialogTemplates","sliceDialog","sliceDialogParameters","currentDialogParameters","dialogName","title","drawn","element","configuration","_jsx","SceneElementView","SceneNavigationProvider","value","SceneOutletContext","Provider","SceneNavigationModelProvider","model","_jsxs","LayoutConfigProvider","storage","div","data-scene-outlet","data-scene-url","currentUrl","data-scene-screen","role","aria-modal","aria-label","data-scene-dialog","composeDialog","SliceDialogView"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationHost.js","sources":["../../../preview-host/ApplicationHost.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, useMemo, useState } from 'react';\nimport { DialogTemplate, SceneElement, type EffectiveConfiguration } from '@cratis/scene.model';\nimport { BindingResolver, BindingScope } from '@cratis/scene.engine';\nimport {\n ComponentRegistry, SceneElementView, SceneHistory, SceneNavigationContextValue, SceneNavigationModel, SceneNavigationModelProvider,\n SceneNavigationProvider, SceneOutletContext, SliceDialogView, collectOutletOwners, createMemorySceneHistory, navigationDestinations,\n sceneRoutesFrom, sliceDialogParameters, useSceneHistoryNavigation,\n} from '@cratis/scene.react';\nimport { LayoutConfigProvider } from '../configuration';\nimport { ApplicationDocument } from './ApplicationDocument';\nimport { previewComponents } from './PreviewTemplate';\nimport { CompositionOptions, collectDestinations, composeApplicationScreen, composeDialog, composeOutletScreen } from './composeApplication';\n\nexport interface ApplicationHostProps {\n /** The document the application is composed from. */\n application: ApplicationDocument;\n\n /** What the host decides about composition; Stage and the preview host differ only here. */\n composition?: CompositionOptions;\n\n /** The structure and navigation the shell's regions show and the items' destinations resolve against. */\n navigationModel: SceneNavigationModel;\n\n registry: ComponentRegistry;\n\n /** The screen shown first. */\n initialScreen: string;\n\n /** Where entries are recorded: the address bar for Stage, an in-memory history for a preview, which never touches the host's URL (PRV4). */\n history?: SceneHistory;\n\n /** What the screens' bindings resolve against. */\n resolveBinding?: BindingResolver;\n queryResults?: Record<string, unknown>;\n\n /**\n * Draws the composed screen. The default renders it with `SceneElementView`; Stage wraps it with its data and command scope.\n * @param element The composed screen.\n * @param configuration What the screen's templates were configured with.\n * @param navigation Where the user is.\n */\n renderScreen?(element: SceneElement, configuration: EffectiveConfiguration | undefined, navigation: SceneNavigationContextValue): ReactNode;\n\n /**\n * Draws what the open dialog shows when the document has no dialog template of that name - a toolbar slice button's task\n * dialog by default.\n */\n renderDialog?(navigation: SceneNavigationContextValue): ReactNode;\n\n /**\n * Draws a dialog the document declares, in place of the host's plain one - a host that wants its own backdrop, a close button\n * and keyboard handling around the template's content. Called inside {@link scope}.\n * @param template The dialog template that is open.\n * @param content The template's composed content.\n * @param navigation Where the user is.\n */\n renderDialogTemplate?(template: DialogTemplate, content: SceneElement, navigation: SceneNavigationContextValue): ReactNode;\n\n /**\n * What a host provides around everything that renders - the screen on the page and the dialog over it: its data, its command\n * dispatcher, its chrome state. Inside the navigation providers, so it can read where the user is. Stage puts its data and\n * interaction scope here, so the screen, a dialog template and a slice dialog all share them.\n * @param navigation Where the user is.\n * @param children The screen and the dialog.\n */\n scope?(navigation: SceneNavigationContextValue, children: ReactNode): ReactNode;\n\n /**\n * Where the shell keeps its layout configuration - the sidebar's state, the chosen theme. A preview keeps none (null, the default);\n * a running application passes its storage so what a user chose is still chosen on the next visit.\n */\n layoutConfigStorage?: Storage | null;\n\n /** Rendered inside the host's providers, after the application. */\n children?: ReactNode;\n}\n\n/**\n * The application as both Stage and the preview host run it: the shell composed for the screen on the page\n * (`composeApplicationScreen`), nested outlets holding the screens placed in them, the navigation model in scope for the shell's\n * topbar and sidebar regions, every destination the document and the navigation lead to routed, and the dialog a toolbar slice\n * button or a dialog destination opened shown over it - one place for all of it (spec PRV9), so a behaviour that differs between\n * the two hosts is a bug in the host, not a second implementation.\n */\nexport function ApplicationHost({ application, composition = {}, navigationModel, registry: hostRegistry, initialScreen, history, resolveBinding, queryResults, renderScreen, renderDialog, renderDialogTemplate, scope, layoutConfigStorage = null, children }: ApplicationHostProps) {\n const [memoryHistory] = useState(() => createMemorySceneHistory());\n const registry = useMemo(() => ({ ...previewComponents, ...hostRegistry }), [hostRegistry]);\n const hostHistory = history ?? memoryHistory;\n const screens = application.screens;\n\n const outletScreens = useMemo(\n () => Object.fromEntries(screens.map(candidate => [candidate.name, composeOutletScreen(application, candidate, composition)])),\n [application, composition, screens]);\n const owners = useMemo(() => collectOutletOwners(outletScreens), [outletScreens]);\n const destinations = useMemo(\n () => [...collectDestinations(application), ...navigationDestinations(navigationModel.structure, navigationModel.navigation, navigationModel.screenFor)],\n [application, navigationModel]);\n const routes = useMemo(() => sceneRoutesFrom(screens.map(candidate => candidate.name), destinations), [destinations, screens]);\n const bindingScope = useMemo<BindingScope>(() => ({ queryResults }), [queryResults]);\n const navigation = useSceneHistoryNavigation(hostHistory, routes, initialScreen, bindingScope, owners, destinations);\n\n const screen = screens.find(candidate => candidate.name === navigation.primaryScreen) ?? screens.find(candidate => candidate.name === initialScreen) ?? screens[0];\n const composed = useMemo(() => screen ? composeApplicationScreen(application, screen, composition) : undefined, [application, composition, screen]);\n const outletContext = useMemo(() => ({ screens: outletScreens, registry }), [outletScreens, registry]);\n\n const dialogTemplate = navigation.currentDialog ? application.dialogTemplates?.find(candidate => candidate.name === navigation.currentDialog) : undefined;\n const sliceDialog = !dialogTemplate && navigation.currentDialog && sliceDialogParameters(navigation.currentDialogParameters) !== undefined;\n const dialogName = sliceDialogParameters(navigation.currentDialogParameters)?.title ?? navigation.currentDialog;\n\n const dialogContent = dialogTemplate ? composeDialog(application, dialogTemplate, composition) : undefined;\n\n const body = (\n <>\n <div data-scene-outlet='primary' data-scene-url={navigation.currentUrl} data-scene-screen={navigation.primaryScreen}>\n {composed && <Drawn>{renderScreen\n ? () => renderScreen(composed.element, composed.configuration, navigation)\n : () => <SceneElementView element={composed.element} registry={registry} resolveBinding={resolveBinding} queryResults={queryResults} configuration={composed.configuration} />}</Drawn>}\n </div>\n {dialogTemplate && dialogContent && (renderDialogTemplate\n ? <Drawn>{() => renderDialogTemplate(dialogTemplate, dialogContent, navigation)}</Drawn>\n : (\n <div role='dialog' aria-modal='true' aria-label={dialogName} data-scene-dialog={navigation.currentDialog}>\n <SceneElementView element={dialogContent} registry={registry} resolveBinding={resolveBinding} queryResults={queryResults} />\n </div>\n ))}\n {sliceDialog && (\n <div role='dialog' aria-modal='true' aria-label={dialogName} data-scene-dialog={navigation.currentDialog}>\n {renderDialog?.(navigation) ?? <SliceDialogView />}\n </div>\n )}\n </>\n );\n\n return (\n <SceneNavigationProvider value={navigation}>\n <SceneOutletContext.Provider value={outletContext}>\n <SceneNavigationModelProvider model={navigationModel}>\n {/* The shell reads its layout configuration from a provider; nothing is saved unless the host gives it somewhere to. */}\n <LayoutConfigProvider storage={layoutConfigStorage}>\n {scope ? scope(navigation, body) : body}\n {children}\n </LayoutConfigProvider>\n </SceneNavigationModelProvider>\n </SceneOutletContext.Provider>\n </SceneNavigationProvider>\n );\n}\n\n/** Calls what a host draws as part of this component, so a hook it uses runs under the providers the host put in scope. */\nfunction Drawn({ children }: { children(): ReactNode }) {\n return <>{children()}</>;\n}\n"],"names":["ApplicationHost","application","composition","navigationModel","registry","hostRegistry","initialScreen","history","resolveBinding","queryResults","renderScreen","renderDialog","renderDialogTemplate","scope","layoutConfigStorage","children","memoryHistory","useState","createMemorySceneHistory","useMemo","previewComponents","hostHistory","screens","outletScreens","Object","fromEntries","map","candidate","name","composeOutletScreen","owners","collectOutletOwners","destinations","collectDestinations","navigationDestinations","structure","navigation","screenFor","routes","sceneRoutesFrom","bindingScope","useSceneHistoryNavigation","screen","find","primaryScreen","composed","composeApplicationScreen","undefined","outletContext","dialogTemplate","currentDialog","dialogTemplates","sliceDialog","sliceDialogParameters","currentDialogParameters","dialogName","title","dialogContent","composeDialog","body","_jsxs","_Fragment","_jsx","div","data-scene-outlet","data-scene-url","currentUrl","data-scene-screen","Drawn","element","configuration","SceneElementView","role","aria-modal","aria-label","data-scene-dialog","SliceDialogView","SceneNavigationProvider","value","SceneOutletContext","Provider","SceneNavigationModelProvider","model","LayoutConfigProvider","storage"],"mappings":"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"}