@minecraft/creator-tools 0.10.1 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/Carto.js +33 -6
- package/app/CartoApp.js +1 -0
- package/app/IGalleryItem.js +7 -0
- package/app/IProjectItemData.js +11 -3
- package/app/IProjectItemVariant.js +1 -0
- package/app/IProjectItemVariantSeed.js +4 -0
- package/app/Project.js +213 -809
- package/app/ProjectAutogeneration.js +28 -27
- package/app/ProjectExporter.js +15 -12
- package/app/ProjectItem.js +163 -32
- package/app/{ProjectItemManager.js → ProjectItemCreateManager.js} +153 -46
- package/app/ProjectItemInference.js +709 -0
- package/app/ProjectItemRelations.js +32 -32
- package/app/ProjectItemUtilities.js +111 -10
- package/app/ProjectItemVariant.js +1 -1
- package/app/ProjectItemVariantCreateManager.js +72 -0
- package/app/ProjectStandard.js +6 -6
- package/app/ProjectUtilities.js +59 -57
- package/cli/ClUtils.js +2 -1
- package/cli/TaskWorker.js +9 -1
- package/cli/index.js +233 -141
- package/core/Constants.js +2 -1
- package/core/Utilities.js +24 -2
- package/data/content/index.json +4 -0
- package/data/content/newitemjson/aggregate_feature.json +9 -0
- package/data/content/newitemjson/atmospherics.json +79 -0
- package/data/content/newitemjson/attachable.json +18 -0
- package/data/content/newitemjson/biome.json +13 -0
- package/data/content/newitemjson/block_behavior.json +13 -0
- package/data/content/newitemjson/block_catalog.json +6 -0
- package/data/content/newitemjson/block_culling.json +9 -0
- package/data/content/newitemjson/cave_carver_feature.json +9 -0
- package/data/content/newitemjson/color_grading.json +34 -0
- package/data/content/newitemjson/entity_behavior.json +19 -0
- package/data/content/newitemjson/entity_resources.json +27 -0
- package/data/content/newitemjson/feature_rule.json +16 -0
- package/data/content/newitemjson/geode_feature.json +28 -0
- package/data/content/newitemjson/index.json +33 -0
- package/data/content/newitemjson/item_behavior.json +17 -0
- package/data/content/newitemjson/jigsaw_processor_list.json +8 -0
- package/data/content/newitemjson/jigsaw_structure.json +14 -0
- package/data/content/newitemjson/jigsaw_structure_set.json +21 -0
- package/data/content/newitemjson/jigsaw_template_pool.json +8 -0
- package/data/content/newitemjson/lighting.json +44 -0
- package/data/content/newitemjson/loot_table.json +1 -0
- package/data/content/newitemjson/pbr.json +9 -0
- package/data/content/newitemjson/point_lights.json +47 -0
- package/data/content/newitemjson/recipe_shaped.json +9 -0
- package/data/content/newitemjson/recipe_shapeless.json +9 -0
- package/data/content/newitemjson/render_controller.json +10 -0
- package/data/content/newitemjson/shadows.json +4 -0
- package/data/content/newitemjson/spawn_rule.json +9 -0
- package/data/content/newitemjson/water.json +22 -0
- package/data/forms/biome/biome_definition.form.json +663 -503
- package/data/forms/biome/biome_description.form.json +8 -2
- package/data/forms/biome/biome_json_file.form.json +685 -525
- package/data/forms/biome/biome_replacement.form.json +17 -11
- package/data/forms/biome/minecraft_capped_surface.form.json +60 -25
- package/data/forms/biome/minecraft_climate.form.json +15 -15
- package/data/forms/biome/minecraft_frozen_ocean_surface.form.json +96 -51
- package/data/forms/biome/minecraft_mesa_surface.form.json +142 -79
- package/data/forms/biome/minecraft_mountain_parameters.form.json +12 -8
- package/data/forms/biome/minecraft_multinoise_generation_rules.form.json +12 -12
- package/data/forms/biome/minecraft_overworld_generation_rules.form.json +20 -4
- package/data/forms/biome/minecraft_overworld_height.form.json +6 -6
- package/data/forms/biome/minecraft_replace_biomes.form.json +17 -11
- package/data/forms/biome/minecraft_surface_material_adjustments.form.json +84 -64
- package/data/forms/biome/minecraft_surface_parameters.form.json +96 -51
- package/data/forms/biome/minecraft_swamp_surface.form.json +96 -51
- package/data/forms/biome/minecraft_tags.form.json +1 -1
- package/data/forms/block/materialinstanceface.form.json +34 -0
- package/data/forms/block/minecraft_destructible_by_mining.form.json +3 -28
- package/data/forms/block/minecraft_destruction_particles.form.json +7 -0
- package/data/forms/block/minecraft_geometry.form.json +74 -0
- package/data/forms/block/minecraft_item_visual.form.json +1 -0
- package/data/forms/block/minecraft_liquid_detection.form.json +1 -0
- package/data/forms/block/minecraft_map_color.form.json +7 -6
- package/data/forms/block/minecraft_material_instances.form.json +45 -0
- package/data/forms/block/minecraft_replaceable.form.json +1 -0
- package/data/forms/client_biome/client_biome_definition.form.json +145 -139
- package/data/forms/client_biome/client_biome_description.form.json +7 -1
- package/data/forms/client_biome/client_biome_json_file.form.json +151 -145
- package/data/forms/client_biome/minecraft_ambient_sounds.form.json +1 -0
- package/data/forms/client_biome/minecraft_atmosphere_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_biome_music.form.json +7 -6
- package/data/forms/client_biome/minecraft_color_grading_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_lighting_identifier.form.json +1 -1
- package/data/forms/client_biome/minecraft_water_identifier.form.json +1 -1
- package/data/forms/client_block/block_culling.form.json +15 -10
- package/data/forms/clientbiome/index.json +1 -0
- package/data/forms/entity/entity_component_definitions.form.json +1860 -0
- package/data/forms/entity/entity_document.form.json +3748 -0
- package/data/forms/entity/filter_test.form.json +10 -10
- package/data/forms/entity/index.json +1 -1
- package/data/forms/entity/minecraft_addrider.form.json +1 -1
- package/data/forms/entity/minecraft_ageable.form.json +23 -0
- package/data/forms/entity/minecraft_ambient_sound_interval.form.json +24 -0
- package/data/forms/entity/minecraft_angry.form.json +1 -2
- package/data/forms/entity/minecraft_behavior_fire_at_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_float.form.json +8 -0
- package/data/forms/entity/minecraft_behavior_float_tempt.form.json +157 -6
- package/data/forms/entity/minecraft_behavior_float_wander.form.json +108 -6
- package/data/forms/entity/minecraft_behavior_follow_caravan.form.json +10 -10
- package/data/forms/entity/minecraft_behavior_follow_mob.form.json +369 -3
- package/data/forms/entity/minecraft_behavior_hold_ground.form.json +24 -24
- package/data/forms/entity/minecraft_behavior_jump_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_melee_box_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_move_around_target.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_nearest_attackable_target.form.json +33 -8
- package/data/forms/entity/minecraft_behavior_offer_flower.form.json +2 -12
- package/data/forms/entity/minecraft_behavior_panic.form.json +15 -6
- package/data/forms/entity/minecraft_behavior_player_ride_tamed.form.json +17 -1
- package/data/forms/entity/minecraft_behavior_random_hover.form.json +22 -0
- package/data/forms/entity/minecraft_behavior_ranged_attack.form.json +2 -2
- package/data/forms/entity/minecraft_behavior_summon_entity.form.json +1 -0
- package/data/forms/entity/minecraft_behavior_tempt.form.json +40 -0
- package/data/forms/entity/minecraft_body_rotation_always_follows_head.form.json +14 -0
- package/data/forms/entity/minecraft_body_rotation_axis_aligned.form.json +8 -0
- package/data/forms/entity/minecraft_body_rotation_blocked.form.json +6 -0
- package/data/forms/entity/minecraft_boostable.form.json +9 -4
- package/data/forms/entity/minecraft_breathable.form.json +30 -0
- package/data/forms/entity/minecraft_breedable.form.json +45 -18
- package/data/forms/entity/minecraft_can_fly.form.json +6 -0
- package/data/forms/entity/minecraft_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_collision_box.form.json +40 -28
- package/data/forms/entity/minecraft_conditional_bandwidth_optimization.form.json +6 -0
- package/data/forms/entity/minecraft_damage_sensor.form.json +37 -23
- package/data/forms/entity/minecraft_despawn.form.json +8 -0
- package/data/forms/entity/minecraft_entity_sensor.form.json +140 -20
- package/data/forms/entity/minecraft_equipment.form.json +24 -0
- package/data/forms/entity/minecraft_explode.form.json +110 -104
- package/data/forms/entity/minecraft_flying_speed.form.json +30 -0
- package/data/forms/entity/minecraft_follow_range.form.json +9 -0
- package/data/forms/entity/minecraft_home.form.json +57 -23
- package/data/forms/entity/minecraft_hurt_on_condition.form.json +28 -36
- package/data/forms/entity/minecraft_ignore_cannot_be_attacked.form.json +1 -0
- package/data/forms/entity/minecraft_input_air_controlled.form.json +31 -3
- package/data/forms/entity/minecraft_interact.form.json +862 -248
- package/data/forms/entity/minecraft_is_baby.form.json +32 -6
- package/data/forms/entity/minecraft_is_collidable.form.json +6 -0
- package/data/forms/entity/minecraft_is_hidden_when_invisible.form.json +6 -0
- package/data/forms/entity/minecraft_is_tamed.form.json +6 -0
- package/data/forms/entity/minecraft_jump_static.form.json +6 -0
- package/data/forms/entity/minecraft_knockback_resistance.form.json +14 -0
- package/data/forms/entity/minecraft_leashable.form.json +229 -214
- package/data/forms/entity/minecraft_leashable_to.form.json +244 -0
- package/data/forms/entity/minecraft_movement.form.json +26 -0
- package/data/forms/entity/minecraft_movement_hover.form.json +6 -0
- package/data/forms/entity/minecraft_nameable.form.json +6 -0
- package/data/forms/entity/minecraft_navigation_float.form.json +28 -2
- package/data/forms/entity/minecraft_navigation_hover.form.json +11 -0
- package/data/forms/entity/minecraft_physics.form.json +8 -0
- package/data/forms/entity/minecraft_pushable.form.json +37 -0
- package/data/forms/entity/minecraft_remove_in_peaceful.form.json +212 -0
- package/data/forms/entity/minecraft_rideable.form.json +302 -300
- package/data/forms/entity/minecraft_scale.form.json +38 -0
- package/data/forms/entity/minecraft_transient.form.json +1 -0
- package/data/forms/entity/minecraft_type_family.form.json +20 -0
- package/data/forms/entityevents/emit_particle.form.json +1 -0
- package/data/forms/entityevents/play_sound.form.json +1 -0
- package/data/forms/entityfilters/bool_property.form.json +37 -1
- package/data/forms/entityfilters/has_equipment.form.json +28 -4
- package/data/forms/entityfilters/in_caravan.form.json +14 -3
- package/data/forms/entityfilters/in_contact_with_water.form.json +1 -3
- package/data/forms/entityfilters/in_lava.form.json +22 -34
- package/data/forms/entityfilters/index.json +1 -1
- package/data/forms/entityfilters/is_daytime.form.json +8 -0
- package/data/forms/entityfilters/is_family.form.json +40 -26
- package/data/forms/entityfilters/is_riding_self.form.json +129 -0
- package/data/forms/entityfilters/rider_count.form.json +56 -13
- package/data/forms/index.json +1 -1
- package/data/forms/item/90.form.json +1486 -0
- package/data/forms/item/index.json +1 -1
- package/data/forms/item/minecraft_block_placer.form.json +13 -12
- package/data/forms/item/minecraft_bundle_interaction.form.json +1 -0
- package/data/forms/item/minecraft_compostable.form.json +1 -0
- package/data/forms/item/minecraft_digger.form.json +11 -11
- package/data/forms/item/minecraft_durability.form.json +4 -4
- package/data/forms/item/minecraft_dyeable.form.json +1 -0
- package/data/forms/item/minecraft_enchantable.form.json +20 -20
- package/data/forms/item/minecraft_entity_placer.form.json +10 -10
- package/data/forms/item/minecraft_food.form.json +25 -20
- package/data/forms/item/minecraft_icon.form.json +23 -6
- package/data/forms/item/minecraft_item.form.json +102 -17
- package/data/forms/item/minecraft_rarity.form.json +1 -0
- package/data/forms/item/minecraft_record.form.json +10 -10
- package/data/forms/item/minecraft_shooter.form.json +12 -12
- package/data/forms/item/minecraft_storage_item.form.json +35 -34
- package/data/forms/item/minecraft_throwable.form.json +18 -18
- package/data/forms/item/minecraft_use_modifiers.form.json +22 -14
- package/data/forms/item/minecraft_wearable.form.json +6 -6
- package/data/forms/misc/biome_replacement.form.json +17 -11
- package/data/forms/misc/bounds.form.json +4 -4
- package/data/forms/misc/class_v1_21_80_jigsawblockmetadata.form.json +24 -24
- package/data/forms/misc/crafting_catalog_category.form.json +12 -12
- package/data/forms/misc/crafting_catalog_document.form.json +12 -12
- package/data/forms/misc/crafting_catalog_group.form.json +12 -12
- package/data/forms/misc/crafting_catalog_group_icon.form.json +12 -12
- package/data/forms/misc/dimension.form.json +20 -20
- package/data/forms/misc/dimensiondocument.form.json +20 -20
- package/data/forms/misc/emitter_lifetime_events_proxy.form.json +32 -32
- package/data/forms/misc/emitter_local_space_proxy.form.json +4 -4
- package/data/forms/misc/emitter_rate_steady.form.json +12 -12
- package/data/forms/misc/emitter_shape_box.form.json +34 -34
- package/data/forms/misc/emitter_shape_custom.form.json +12 -12
- package/data/forms/misc/emitter_shape_disc.form.json +45 -45
- package/data/forms/misc/emitter_shape_entity_aabb.form.json +5 -5
- package/data/forms/misc/emitter_shape_point.form.json +12 -12
- package/data/forms/misc/emitter_shape_sphere.form.json +34 -34
- package/data/forms/misc/minecraft_aim_assist_categories.form.json +16 -16
- package/data/forms/misc/minecraft_aim_assist_preset.form.json +21 -21
- package/data/forms/misc/minecraft_dimension_bounds.form.json +5 -4
- package/data/forms/misc/particle_appearance_billboard.form.json +10 -10
- package/data/forms/misc/particle_appearance_billboard_flipbook_data.form.json +16 -16
- package/data/forms/misc/particle_curve_bezier_chain.form.json +16 -16
- package/data/forms/misc/particle_curve_bezier_chain_node_proxy.form.json +9 -9
- package/data/forms/misc/particle_curve_linear.form.json +17 -17
- package/data/forms/misc/particle_effect.form.json +850 -850
- package/data/forms/misc/particle_effect_basic_render_parameters.form.json +1 -1
- package/data/forms/misc/particle_effect_component.form.json +589 -589
- package/data/forms/misc/particle_effect_description.form.json +6 -6
- package/data/forms/misc/particle_event_node.form.json +148 -148
- package/data/forms/misc/particle_event_random_node.form.json +183 -183
- package/data/forms/misc/particle_initialization.form.json +12 -12
- package/data/forms/misc/particle_lifetime_expression.form.json +12 -12
- package/data/forms/misc/particle_motion_collision.form.json +36 -36
- package/data/forms/misc/particle_motion_collision_event.form.json +5 -5
- package/data/forms/misc/particle_motion_parametric.form.json +12 -12
- package/data/forms/spawn/filter_test.form.json +10 -10
- package/data/forms/visual/index.json +1 -1
- package/data/forms/visual/texture_set.v1.21.30.form.json +57 -0
- package/data/forms/world/feature_rule_conditions.form.json +31 -31
- package/data/forms/world/feature_rule_definition.form.json +126 -126
- package/data/forms/world/filter_test.form.json +10 -10
- package/data/forms/world/jigsawstructure.form.json +82 -76
- package/data/forms/world/scatter_params.form.json +71 -71
- package/data/gallery.json +206 -0
- package/data/mci/minecraft-samples-main.mci.json +1 -1
- package/data/mci/preview.mci.json +1 -1
- package/data/mci/release.mci.json +1 -1
- package/data/typedefs.beta.json +6832 -4416
- package/dataform/DataFormUtilities.js +26 -0
- package/dataform/IField.js +1 -0
- package/devproject/EnvSettings.js +1 -1
- package/devproject/NpmModule.js +1 -1
- package/docgen/FormDefinitionTypeScriptGenerator.js +2 -0
- package/docgen/FormJsonDocumentationGenerator.js +193 -91
- package/docgen/FormMarkdownDocumentationGenerator.js +31 -2
- package/docgen/JsonSchemaGenerator.js +2 -1
- package/github/GitHubFile.js +2 -2
- package/info/AnimationResourceInfoGenerator.js +2 -2
- package/info/CooperativeAddOnItemRequirementsGenerator.js +51 -51
- package/info/CooperativeAddOnRequirementsGenerator.js +46 -39
- package/info/GeneratorRegistrations.js +11 -1
- package/info/GeometryInfoGenerator.js +3 -3
- package/info/PackInfoGenerator.js +9 -8
- package/info/SchemaItemInfoGenerator.js +5 -5
- package/info/SharingInfoGenerator.js +17 -5
- package/info/StrictPlatformInfoGenerator.js +4 -4
- package/info/TextureImageInfoGenerator.js +10 -9
- package/info/TextureInfoGenerator.js +19 -19
- package/info/TextureReferenceInfoGenerator.js +6 -6
- package/info/TypesInfoGenerator.js +8 -8
- package/info/UnknownItemGenerator.js +2 -2
- package/info/WorldDataInfoGenerator.js +6 -6
- package/info/fileGenerators/CheckNoBOMGenerator.js +46 -0
- package/info/projectGenerators/CheckPackIconsGenerator.js +83 -0
- package/info/projectGenerators/CheckWorldIconsGenerator.js +93 -0
- package/integrations/BlockbenchModel.js +271 -72
- package/local/LocalEnvironment.js +4 -4
- package/manager/BaseGameVersionManager.js +4 -4
- package/manager/BlocksCatalogManager.js +4 -4
- package/manager/EntityTypeManager.js +4 -4
- package/manager/FormatVersionManager.js +24 -24
- package/manager/ItemTypeManager.js +4 -4
- package/manager/MinEngineVersionManager.js +14 -14
- package/manager/ScriptModuleManager.js +6 -6
- package/manager/VsCodeFileManager.js +10 -10
- package/maps/app/Carto.js.map +1 -1
- package/maps/app/CartoApp.js.map +1 -1
- package/maps/app/ICartoData.js.map +1 -1
- package/maps/app/IGalleryItem.js.map +1 -1
- package/maps/app/IProjectItemData.js.map +1 -1
- package/maps/app/IProjectItemSeed.js.map +1 -1
- package/maps/app/IProjectItemVariant.js.map +1 -1
- package/maps/app/IProjectItemVariantSeed.js.map +1 -0
- package/maps/app/Project.js.map +1 -1
- package/maps/app/ProjectAutogeneration.js.map +1 -1
- package/maps/app/ProjectExporter.js.map +1 -1
- package/maps/app/ProjectItem.js.map +1 -1
- package/maps/app/ProjectItemCreateManager.js.map +1 -0
- package/maps/app/ProjectItemInference.js.map +1 -0
- package/maps/app/ProjectItemRelations.js.map +1 -1
- package/maps/app/ProjectItemUtilities.js.map +1 -1
- package/maps/app/ProjectItemVariant.js.map +1 -1
- package/maps/app/ProjectItemVariantCreateManager.js.map +1 -0
- package/maps/app/ProjectStandard.js.map +1 -1
- package/maps/app/ProjectUtilities.js.map +1 -1
- package/maps/cli/ClUtils.js.map +1 -1
- package/maps/cli/TaskWorker.js.map +1 -1
- package/maps/cli/index.js.map +1 -1
- package/maps/core/Constants.js.map +1 -1
- package/maps/core/ISimpleReference.js.map +1 -1
- package/maps/core/Utilities.js.map +1 -1
- package/maps/dataform/DataFormUtilities.js.map +1 -1
- package/maps/dataform/IField.js.map +1 -1
- package/maps/dataform/IFormDefinition.js.map +1 -1
- package/maps/devproject/EnvSettings.js.map +1 -1
- package/maps/devproject/NpmModule.js.map +1 -1
- package/maps/docgen/FormDefinitionTypeScriptGenerator.js.map +1 -1
- package/maps/docgen/FormJsonDocumentationGenerator.js.map +1 -1
- package/maps/docgen/FormMarkdownDocumentationGenerator.js.map +1 -1
- package/maps/docgen/JsonSchemaGenerator.js.map +1 -1
- package/maps/github/GitHubFile.js.map +1 -1
- package/maps/info/AnimationResourceInfoGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnItemRequirementsGenerator.js.map +1 -1
- package/maps/info/CooperativeAddOnRequirementsGenerator.js.map +1 -1
- package/maps/info/GeneratorRegistrations.js.map +1 -1
- package/maps/info/GeometryInfoGenerator.js.map +1 -1
- package/maps/info/PackInfoGenerator.js.map +1 -1
- package/maps/info/SchemaItemInfoGenerator.js.map +1 -1
- package/maps/info/SharingInfoGenerator.js.map +1 -1
- package/maps/info/StrictPlatformInfoGenerator.js.map +1 -1
- package/maps/info/TextureImageInfoGenerator.js.map +1 -1
- package/maps/info/TextureInfoGenerator.js.map +1 -1
- package/maps/info/TextureReferenceInfoGenerator.js.map +1 -1
- package/maps/info/TypesInfoGenerator.js.map +1 -1
- package/maps/info/UnknownItemGenerator.js.map +1 -1
- package/maps/info/WorldDataInfoGenerator.js.map +1 -1
- package/maps/info/fileGenerators/CheckNoBOMGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckPackIconsGenerator.js.map +1 -0
- package/maps/info/projectGenerators/CheckWorldIconsGenerator.js.map +1 -0
- package/maps/integrations/BlockbenchModel.js.map +1 -1
- package/maps/integrations/IBlockbenchModel.js.map +1 -1
- package/maps/local/ILocalEnvironmentData.js.map +1 -1
- package/maps/local/LocalEnvironment.js.map +1 -1
- package/maps/manager/BaseGameVersionManager.js.map +1 -1
- package/maps/manager/BlocksCatalogManager.js.map +1 -1
- package/maps/manager/EntityTypeManager.js.map +1 -1
- package/maps/manager/FormatVersionManager.js.map +1 -1
- package/maps/manager/ItemTypeManager.js.map +1 -1
- package/maps/manager/MinEngineVersionManager.js.map +1 -1
- package/maps/manager/ScriptModuleManager.js.map +1 -1
- package/maps/manager/VsCodeFileManager.js.map +1 -1
- package/maps/minecraft/AnimationResourceDefinition.js.map +1 -1
- package/maps/minecraft/AttachableResourceDefinition.js.map +1 -1
- package/maps/minecraft/AudioDefinition.js.map +1 -1
- package/maps/minecraft/BehaviorManifestDefinition.js.map +1 -1
- package/maps/minecraft/BlockTypeDefinition.js.map +1 -1
- package/maps/minecraft/BlocksCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Database.js.map +1 -1
- package/maps/minecraft/EntityTypeDefinition.js.map +1 -1
- package/maps/minecraft/EntityTypeResourceDefinition.js.map +1 -1
- package/maps/minecraft/FlipbookTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/IAnimationResource.js.map +1 -1
- package/maps/minecraft/IEntityTypeResource.js.map +1 -1
- package/maps/minecraft/ItemTextureCatalogDefinition.js.map +1 -1
- package/maps/minecraft/ItemTypeDefinition.js.map +1 -1
- package/maps/minecraft/JsonUIResourceDefinition.js.map +1 -1
- package/maps/minecraft/LocManager.js.map +1 -1
- package/maps/minecraft/MCWorld.js.map +1 -1
- package/maps/minecraft/ManagedComponentGroup.js.map +1 -1
- package/maps/minecraft/ManagedPermutation.js.map +1 -1
- package/maps/minecraft/MinecraftDefinitions.js.map +1 -1
- package/maps/minecraft/MinecraftUtilities.js.map +1 -1
- package/maps/minecraft/MusicDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/Pack.js.map +1 -1
- package/maps/minecraft/ParticleEffectResourceDefinition.js.map +1 -1
- package/maps/minecraft/ResourceManifestDefinition.js.map +1 -1
- package/maps/minecraft/SoundCatalogDefinition.js.map +1 -1
- package/maps/minecraft/SoundDefinitionCatalogDefinition.js.map +1 -1
- package/maps/minecraft/TerrainTextureCatalogDefinition.js.map +1 -1
- package/maps/storage/FileBase.js.map +1 -1
- package/maps/storage/FileSystemFolder.js.map +1 -1
- package/maps/storage/FolderBase.js.map +1 -1
- package/maps/storage/IFile.js.map +1 -1
- package/maps/storage/IFolder.js.map +1 -1
- package/maps/storage/ImageUtilites.js.map +1 -0
- package/maps/storage/StorageUtilities.js.map +1 -1
- package/maps/test/CommandLineTest.js.map +1 -1
- package/minecraft/AnimationResourceDefinition.js +13 -2
- package/minecraft/AttachableResourceDefinition.js +10 -10
- package/minecraft/AudioDefinition.js +2 -2
- package/minecraft/BehaviorManifestDefinition.js +6 -6
- package/minecraft/BlockTypeDefinition.js +10 -10
- package/minecraft/BlocksCatalogDefinition.js +2 -2
- package/minecraft/Database.js +38 -12
- package/minecraft/EntityTypeDefinition.js +21 -11
- package/minecraft/EntityTypeResourceDefinition.js +65 -15
- package/minecraft/FlipbookTextureCatalogDefinition.js +4 -4
- package/minecraft/ItemTextureCatalogDefinition.js +2 -2
- package/minecraft/ItemTypeDefinition.js +4 -4
- package/minecraft/JsonUIResourceDefinition.js +2 -2
- package/minecraft/LocManager.js +2 -2
- package/minecraft/MCWorld.js +2 -2
- package/minecraft/ManagedComponentGroup.js +3 -0
- package/minecraft/ManagedPermutation.js +3 -0
- package/minecraft/MinecraftDefinitions.js +23 -23
- package/minecraft/MinecraftUtilities.js +27 -0
- package/minecraft/MusicDefinitionCatalogDefinition.js +2 -2
- package/minecraft/Pack.js +15 -0
- package/minecraft/ParticleEffectResourceDefinition.js +4 -4
- package/minecraft/ResourceManifestDefinition.js +3 -3
- package/minecraft/SoundCatalogDefinition.js +4 -4
- package/minecraft/SoundDefinitionCatalogDefinition.js +4 -4
- package/minecraft/TerrainTextureCatalogDefinition.js +2 -2
- package/package.json +1 -1
- package/storage/FileBase.js +3 -0
- package/storage/FileSystemFolder.js +2 -1
- package/storage/FolderBase.js +9 -0
- package/storage/ImageUtilites.js +35 -0
- package/storage/StorageUtilities.js +52 -2
- package/test/CommandLineTest.js +141 -1
- package/maps/app/ProjectItemManager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/app/ProjectItem.ts"],"names":[],"mappings":"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","file":"../../app/ProjectItem.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IProjectItemData, {\r\n ProjectItemCreationType,\r\n ProjectItemEditPreference,\r\n ProjectItemErrorStatus,\r\n ProjectItemStorageType,\r\n} from \"./IProjectItemData\";\r\nimport Log from \"./../core/Log\";\r\nimport { ProjectItemType } from \"./IProjectItemData\";\r\nimport Project from \"./Project\";\r\nimport { EventDispatcher } from \"ste-events\";\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport IGitHubInfo from \"./IGitHubInfo\";\r\nimport EntityTypeDefinition from \"../minecraft/EntityTypeDefinition\";\r\nimport { ProjectEditPreference } from \"./IProjectData\";\r\nimport MCWorld from \"../minecraft/MCWorld\";\r\nimport ZipStorage from \"../storage/ZipStorage\";\r\nimport Utilities from \"../core/Utilities\";\r\nimport { StorageErrorStatus } from \"../storage/IStorage\";\r\nimport ProjectItemUtilities from \"./ProjectItemUtilities\";\r\nimport Pack from \"../minecraft/Pack\";\r\nimport ProjectAutogeneration from \"./ProjectAutogeneration\";\r\nimport ProjectItemRelationship from \"./IProjectItemRelationship\";\r\nimport IProjectItemRelationship from \"./IProjectItemRelationship\";\r\nimport IProjectItemUnfulfilledRelationship from \"./IProjectItemUnfulfilledRelationship\";\r\nimport ProjectItemRelations from \"./ProjectItemRelations\";\r\nimport ProjectItemVariant from \"./ProjectItemVariant\";\r\nimport { ProjectItemVariantType } from \"./IProjectItemVariant\";\r\n\r\nexport default class ProjectItem {\r\n private _data: IProjectItemData;\r\n private _project: Project;\r\n private _onPropertyChanged = new EventDispatcher<ProjectItem, string>();\r\n private _onFileRetrieved = new EventDispatcher<ProjectItem, IFile>();\r\n private _onFolderRetrieved = new EventDispatcher<ProjectItem, IFolder>();\r\n private _onLoaded = new EventDispatcher<ProjectItem, ProjectItem>();\r\n private _defaultFile: IFile | null;\r\n private _defaultFolder: IFolder | null;\r\n private _pendingLoadRequests: ((value: unknown) => void)[] = [];\r\n private _isLoading: boolean = false;\r\n private _isFileContentProcessed: boolean = false;\r\n private _imageUrlBase64Cache: string | undefined;\r\n private _pack: Pack | undefined;\r\n\r\n public parentItems: ProjectItemRelationship[] | undefined;\r\n public childItems: ProjectItemRelationship[] | undefined;\r\n public unfulfilledRelationships: IProjectItemUnfulfilledRelationship[] | undefined;\r\n\r\n public variants: { [label: string]: ProjectItemVariant };\r\n\r\n constructor(parent: Project, incomingData?: IProjectItemData) {\r\n this._project = parent;\r\n this._defaultFile = null;\r\n this._defaultFolder = null;\r\n this._isFileContentProcessed = false;\r\n this.variants = {};\r\n this._handleMCWorldLoaded = this._handleMCWorldLoaded.bind(this);\r\n\r\n if (incomingData) {\r\n this._data = incomingData;\r\n } else {\r\n this._data = {\r\n variants: {},\r\n itemType: ProjectItemType.unknown,\r\n projectPath: null,\r\n storageType: ProjectItemStorageType.singleFile,\r\n tags: [],\r\n name: \"\",\r\n };\r\n }\r\n }\r\n\r\n public get parentItemCount() {\r\n if (this.parentItems === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.parentItems.length;\r\n }\r\n\r\n public get childItemCount() {\r\n if (this.childItems === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.childItems.length;\r\n }\r\n\r\n public get unfulfilledRelationshipsCount() {\r\n if (this.unfulfilledRelationships === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.unfulfilledRelationships.length;\r\n }\r\n\r\n public get isInWorld() {\r\n return this._data.isInWorld;\r\n }\r\n\r\n public set isInWorld(isInWorld: boolean | undefined) {\r\n this._data.isInWorld = isInWorld;\r\n }\r\n\r\n public get project() {\r\n return this._project;\r\n }\r\n\r\n public get onPropertyChanged() {\r\n return this._onPropertyChanged.asEvent();\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get onFileRetrieved() {\r\n return this._onFileRetrieved.asEvent();\r\n }\r\n\r\n public get onFolderRetrieved() {\r\n return this._onFolderRetrieved.asEvent();\r\n }\r\n\r\n public get gitHubReference() {\r\n return this._data.gitHubReference;\r\n }\r\n\r\n public get isInFileContainer() {\r\n if (!this.projectPath) {\r\n return false;\r\n }\r\n\r\n return this.projectPath.indexOf(\"#\") >= 0;\r\n }\r\n\r\n public get isFileContainerStorageItem() {\r\n return (\r\n this.itemType === ProjectItemType.zip ||\r\n this.itemType === ProjectItemType.MCWorld ||\r\n this.itemType === ProjectItemType.MCProject ||\r\n this.itemType === ProjectItemType.MCAddon ||\r\n this.itemType === ProjectItemType.MCPack ||\r\n this.itemType === ProjectItemType.MCTemplate\r\n );\r\n }\r\n\r\n public get isWorld() {\r\n return (\r\n this.itemType === ProjectItemType.MCProject ||\r\n this.itemType === ProjectItemType.MCWorld ||\r\n this.itemType === ProjectItemType.MCTemplate ||\r\n this.itemType === ProjectItemType.worldFolder\r\n );\r\n }\r\n\r\n static getGitHubSignature(info: IGitHubInfo) {\r\n let sig = info.owner + \"|\" + info.repoName + \"|\";\r\n\r\n if (info.branch !== undefined) {\r\n sig += info.branch;\r\n }\r\n\r\n if (info.folder !== undefined) {\r\n sig += \"|\" + info.folder;\r\n }\r\n\r\n return sig;\r\n }\r\n\r\n get defaultVariant() {\r\n return this.ensureVariant(\"\");\r\n }\r\n\r\n getVariantList() {\r\n const vararr = [];\r\n\r\n for (const key in this._data.variants) {\r\n const variant = this.ensureVariant(key);\r\n vararr.push(variant);\r\n }\r\n\r\n return vararr;\r\n }\r\n\r\n hasNonDefaultVariant() {\r\n const vararr = this.getVariantList();\r\n\r\n if (vararr.length === 0) {\r\n return false;\r\n }\r\n\r\n if (vararr.length > 1) {\r\n return true;\r\n }\r\n\r\n if (vararr[0].label !== \"\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ensureVariant(label: string) {\r\n if (!this.variants[label]) {\r\n const pv = this.project.ensureVariant(label);\r\n\r\n if (!this._data.variants) {\r\n this._data.variants = {};\r\n }\r\n\r\n if (this._data.variants[label] === undefined) {\r\n this._data.variants[label] = { label: label, variantType: ProjectItemVariantType.general };\r\n }\r\n\r\n this.variants[label] = new ProjectItemVariant(this, this._data.variants[label], pv);\r\n }\r\n\r\n return this.variants[label];\r\n }\r\n\r\n getFile(variantName?: string) {\r\n if (variantName === undefined || variantName === \"\") {\r\n return this._defaultFile;\r\n }\r\n\r\n const variant = this.ensureVariant(variantName);\r\n\r\n return variant.file;\r\n }\r\n\r\n getFolder(variantName?: string) {\r\n if (variantName === undefined || variantName === \"\") {\r\n return this._defaultFolder;\r\n }\r\n\r\n const variant = this.ensureVariant(variantName);\r\n\r\n return variant.folder;\r\n }\r\n\r\n getPack() {\r\n if (this._pack) {\r\n return this._pack;\r\n }\r\n\r\n let thisPath = undefined;\r\n\r\n if (this._defaultFile) {\r\n thisPath = this._defaultFile.storageRelativePath;\r\n } else if (this._defaultFolder) {\r\n thisPath = this._defaultFolder.storageRelativePath;\r\n }\r\n\r\n if (thisPath === undefined) {\r\n return undefined;\r\n }\r\n\r\n this.project.ensurePacks();\r\n\r\n for (const pack of this.project.packs) {\r\n if (thisPath.startsWith(pack.folder.storageRelativePath)) {\r\n this._pack = pack;\r\n return this._pack;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n addUnfulfilledRelationship(path: string, itemType: ProjectItemType, isVanillaDependent?: boolean) {\r\n let pir: IProjectItemUnfulfilledRelationship = {\r\n parentItem: this,\r\n path: path,\r\n itemType: itemType,\r\n isVanillaDependent: isVanillaDependent === true,\r\n };\r\n\r\n if (this.unfulfilledRelationships === undefined) {\r\n this.unfulfilledRelationships = [];\r\n }\r\n\r\n this.unfulfilledRelationships.push(pir);\r\n }\r\n\r\n addChildItem(childItem: ProjectItem) {\r\n if (ProjectItemUtilities.wouldBeCircular(childItem)) {\r\n return;\r\n }\r\n\r\n let pir: IProjectItemRelationship = {\r\n parentItem: this,\r\n childItem: childItem,\r\n };\r\n if (this.childItems === undefined) {\r\n this.childItems = [];\r\n }\r\n\r\n if (childItem.parentItems === undefined) {\r\n childItem.parentItems = [];\r\n }\r\n\r\n this.childItems.push(pir);\r\n childItem.parentItems.push(pir);\r\n }\r\n\r\n toString() {\r\n return this.itemType + \": \" + this.projectPath;\r\n }\r\n\r\n getPackRelativePath() {\r\n const pack = this.getPack();\r\n\r\n if (!pack) {\r\n return undefined;\r\n }\r\n\r\n if (this._defaultFile) {\r\n return this._defaultFile.getFolderRelativePath(pack.folder);\r\n } else if (this._defaultFolder) {\r\n return this._defaultFolder.getFolderRelativePath(pack.folder);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static gitHubReferencesEqual(refA: IGitHubInfo | undefined, refB: IGitHubInfo | undefined) {\r\n if (refA === refB) {\r\n return true;\r\n }\r\n\r\n if (refA === undefined && refB === undefined) {\r\n return true;\r\n }\r\n\r\n if (\r\n refA !== undefined &&\r\n refB !== undefined &&\r\n refA.owner === refB.owner &&\r\n refA.repoName === refB.repoName &&\r\n refA.folder === refB.folder &&\r\n refA.branch === refB.branch\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public set gitHubReference(value: IGitHubInfo | undefined) {\r\n if (ProjectItem.gitHubReferencesEqual(this._data.gitHubReference, value)) {\r\n return;\r\n }\r\n\r\n this._data.gitHubReference = value;\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n get title() {\r\n return (\r\n StorageUtilities.getContaineredFileLeafPath(this.projectPath) +\r\n \" (\" +\r\n ProjectItemUtilities.getDescriptionForType(this._data.itemType).toLowerCase() +\r\n \")\"\r\n );\r\n }\r\n\r\n get typeTitle() {\r\n return ProjectItemUtilities.getDescriptionForType(this._data.itemType);\r\n }\r\n\r\n getFolderGroupingPath() {\r\n if (this.projectPath === undefined || this.projectPath === null) {\r\n return undefined;\r\n }\r\n\r\n let folderStoragePath = StorageUtilities.getFolderPath(this.projectPath);\r\n\r\n if (folderStoragePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n let folderStoragePathLower = folderStoragePath.toLowerCase();\r\n\r\n const folderTypeRoots = ProjectItemUtilities.getFolderRootsForType(this.itemType);\r\n\r\n folderTypeRoots.push(\"zip\");\r\n\r\n for (const folderTypeRoot of folderTypeRoots) {\r\n const start = folderStoragePathLower.indexOf(\"/\" + folderTypeRoot + \"/\");\r\n\r\n if (start >= 0) {\r\n folderStoragePath = folderStoragePath.substring(start + 2 + folderTypeRoot.length);\r\n folderStoragePathLower = folderStoragePath.toLowerCase();\r\n }\r\n }\r\n\r\n folderStoragePath = folderStoragePath.replace(/#/gi, \" \").trim();\r\n\r\n return folderStoragePath;\r\n }\r\n\r\n getSchemaPath() {\r\n return ProjectItemUtilities.getSchemaPathForType(this.itemType);\r\n }\r\n\r\n get errorStatus() {\r\n return this._data.errorStatus;\r\n }\r\n\r\n set errorStatus(newErrorStatus: ProjectItemErrorStatus | undefined) {\r\n this._data.errorStatus = newErrorStatus;\r\n }\r\n\r\n get source() {\r\n return this._data.source;\r\n }\r\n\r\n set source(newSource: string | undefined) {\r\n this._data.source = newSource;\r\n }\r\n\r\n get errorMessage() {\r\n return this._data.errorMessage;\r\n }\r\n\r\n set errorMessage(newErrorMessage: string | undefined) {\r\n this._data.errorMessage = newErrorMessage;\r\n }\r\n\r\n get projectPath() {\r\n if (this._data.projectPath === undefined && this._data.storagePath) {\r\n this._data.projectPath = this._data.storagePath;\r\n\r\n return this._data.storagePath;\r\n }\r\n\r\n return this._data.projectPath;\r\n }\r\n\r\n set projectPath(newBasePath: string | undefined | null) {\r\n this._data.projectPath = newBasePath;\r\n }\r\n\r\n get effectiveEditPreference() {\r\n const ep = this.editPreference;\r\n\r\n if (ep === ProjectItemEditPreference.projectDefault) {\r\n return this._project.editPreference;\r\n } else if (ep === ProjectItemEditPreference.forceRaw) {\r\n return ProjectEditPreference.raw;\r\n } else {\r\n return ProjectEditPreference.summarized;\r\n }\r\n }\r\n\r\n get editPreference() {\r\n if (this._data.editPreference === undefined) {\r\n return ProjectItemEditPreference.projectDefault;\r\n }\r\n\r\n return this._data.editPreference;\r\n }\r\n\r\n set editPreference(newEditPreference: ProjectItemEditPreference) {\r\n this._data.editPreference = newEditPreference;\r\n }\r\n\r\n get storageType() {\r\n if (this._data.storageType === undefined) {\r\n return ProjectItemStorageType.singleFile;\r\n }\r\n\r\n return this._data.storageType;\r\n }\r\n\r\n set storageType(newStorageType: ProjectItemStorageType) {\r\n this._data.storageType = newStorageType;\r\n }\r\n\r\n get creationType() {\r\n return this._data.creationType;\r\n }\r\n\r\n set creationType(newCreationType: ProjectItemCreationType | undefined) {\r\n this._data.creationType = newCreationType;\r\n }\r\n\r\n get itemType() {\r\n return this._data.itemType;\r\n }\r\n\r\n get defaultFile() {\r\n return this._defaultFile;\r\n }\r\n\r\n get availableFile() {\r\n if (this._defaultFile) {\r\n return this._defaultFile;\r\n }\r\n\r\n for (const variantName in this.variants) {\r\n if (variantName) {\r\n const variant = this.variants[variantName];\r\n\r\n if (variant.file) {\r\n return variant.file;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n get defaultFolder() {\r\n return this._defaultFolder;\r\n }\r\n\r\n set itemType(newItemType) {\r\n this._data.itemType = newItemType;\r\n\r\n this._onPropertyChanged.dispatch(this, \"itemType\");\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n get isLoaded() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n if (!this.defaultFolder) {\r\n return false;\r\n }\r\n\r\n if (!this.defaultFolder.isLoaded) {\r\n return false;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (!this.defaultFolder.manager || !(this.defaultFolder.manager instanceof MCWorld)) {\r\n return false;\r\n }\r\n\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n return world.isLoaded;\r\n }\r\n\r\n return true;\r\n } else if (this.storageType === ProjectItemStorageType.singleFile) {\r\n if (!this.defaultFile) {\r\n return false;\r\n }\r\n\r\n if (!this.defaultFile.isContentLoaded) {\r\n return false;\r\n }\r\n\r\n if (this.isWorld) {\r\n if (!this.defaultFile.manager || !(this.defaultFile.manager instanceof MCWorld)) {\r\n return false;\r\n }\r\n\r\n const world = this.defaultFile.manager as MCWorld;\r\n\r\n return world.isLoaded;\r\n }\r\n\r\n return this._isFileContentProcessed;\r\n }\r\n\r\n Log.unexpectedContentState();\r\n\r\n return false;\r\n }\r\n\r\n get tags() {\r\n return this._data.tags;\r\n }\r\n\r\n setFile(file: IFile) {\r\n if (file !== this._defaultFile) {\r\n this._defaultFile = file;\r\n this._isFileContentProcessed = false;\r\n }\r\n }\r\n\r\n get needsSave() {\r\n if (\r\n this._defaultFile === null &&\r\n this.creationType === ProjectItemCreationType.generated &&\r\n this.storageType === ProjectItemStorageType.singleFile\r\n ) {\r\n return true;\r\n }\r\n\r\n if (this._defaultFile === null) {\r\n return false;\r\n }\r\n\r\n let val = this._defaultFile.needsSave;\r\n\r\n if (!val) {\r\n if (\r\n this.isFileContainerStorageItem &&\r\n this._defaultFile.fileContainerStorage &&\r\n this._defaultFile.fileContainerStorage instanceof ZipStorage\r\n ) {\r\n val = (this._defaultFile.fileContainerStorage as ZipStorage).isContentUpdated;\r\n }\r\n\r\n /*if (!val) {\r\n const jsFile = this.getJavaScriptLibTwin();\r\n\r\n if (jsFile !== undefined) {\r\n val = jsFile.needsSave;\r\n }\r\n }*/\r\n }\r\n\r\n return val;\r\n }\r\n\r\n updateProjectPath() {\r\n if (this._project && this._project.projectFolder) {\r\n if (this._defaultFile) {\r\n this.projectPath = this._defaultFile.getFolderRelativePath(this._project.projectFolder);\r\n } else if (this._defaultFolder) {\r\n this.projectPath = this._defaultFolder.getFolderRelativePath(this._project.projectFolder);\r\n }\r\n }\r\n }\r\n\r\n async rename(newFileBaseName: string) {\r\n await this.load();\r\n\r\n await this._project.ensureProjectFolder();\r\n\r\n if (this._project.projectFolder === undefined || this._project.projectFolder === null) {\r\n return;\r\n }\r\n\r\n if (this._defaultFile !== null) {\r\n await this._defaultFile.moveTo(\r\n this._defaultFile.parentFolder.storageRelativePath + newFileBaseName + \".\" + this._defaultFile.type\r\n );\r\n\r\n this._data.name = newFileBaseName + \".\" + this._defaultFile.type;\r\n\r\n this.projectPath = this._defaultFile.getFolderRelativePath(this._project.projectFolder);\r\n this.storageType = ProjectItemStorageType.singleFile;\r\n } else {\r\n this._data.name = newFileBaseName;\r\n }\r\n\r\n this._onPropertyChanged.dispatch(this, \"name\");\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n async deleteItem() {\r\n await this.load();\r\n\r\n await ProjectItemRelations.deleteLinksFromParents(this);\r\n\r\n if (this._defaultFile !== null) {\r\n await this._defaultFile.deleteThisFile();\r\n }\r\n\r\n this._project.removeItem(this);\r\n }\r\n\r\n get imageUrl() {\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (this.defaultFolder) {\r\n if (this.defaultFolder.manager instanceof MCWorld) {\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return \"data:image/jpg;base64, \" + world.imageBase64;\r\n }\r\n }\r\n }\r\n } else if (this.isWorld) {\r\n if (this.defaultFile) {\r\n if (this.defaultFile.manager instanceof MCWorld) {\r\n const world = this.defaultFile.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return \"data:image/jpg;base64, \" + world.imageBase64;\r\n }\r\n }\r\n }\r\n } else if (ProjectItemUtilities.isImageType(this.itemType)) {\r\n if (this._imageUrlBase64Cache) {\r\n return this._imageUrlBase64Cache;\r\n }\r\n\r\n if (this._defaultFile && this._defaultFile.content && this._defaultFile.content instanceof Uint8Array) {\r\n this._imageUrlBase64Cache = \"data:image/jpg;base64, \" + Utilities.uint8ArrayToBase64(this._defaultFile.content);\r\n\r\n return this._imageUrlBase64Cache;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n get name() {\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (this.defaultFolder) {\r\n if (this.defaultFolder.manager instanceof MCWorld) {\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return world.name;\r\n }\r\n }\r\n }\r\n } else if (this.itemType === ProjectItemType.MCWorld || this.itemType === ProjectItemType.MCTemplate) {\r\n if (this.defaultFile) {\r\n if (this.defaultFile.manager instanceof MCWorld) {\r\n const world = this.defaultFile.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return world.name;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // for certain types of project items, the name of the file is critical\r\n if (\r\n this.projectPath &&\r\n (this.itemType === ProjectItemType.js ||\r\n this.itemType === ProjectItemType.ts ||\r\n this.itemType === ProjectItemType.testJs ||\r\n this.itemType === ProjectItemType.structure)\r\n ) {\r\n return StorageUtilities.getLeafName(this.projectPath);\r\n }\r\n\r\n if (this._data.name !== undefined) {\r\n return this._data.name;\r\n }\r\n\r\n if (this.projectPath) {\r\n return StorageUtilities.getLeafName(this.projectPath);\r\n }\r\n\r\n return \"untitled\";\r\n }\r\n\r\n async ensureFolderStorage() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n if (\r\n this._defaultFolder === null &&\r\n this.projectPath !== null &&\r\n this.projectPath !== undefined &&\r\n this.projectPath.startsWith(\"/\") &&\r\n this._project.projectFolder !== null &&\r\n this._project.projectFolder !== undefined\r\n ) {\r\n const prefixPaths = this.projectPath.split(\"#\");\r\n\r\n if (prefixPaths.length > 1) {\r\n let folderToLoadFrom: IFolder | undefined = this._project.projectFolder;\r\n\r\n for (let i = 0; i < prefixPaths.length - 1; i++) {\r\n if (folderToLoadFrom) {\r\n const zipFile: IFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[i]);\r\n\r\n await zipFile.loadContent();\r\n\r\n if (zipFile.content && zipFile.content instanceof Uint8Array) {\r\n if (!zipFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n zipStorage.storagePath = zipFile.storageRelativePath + \"#\";\r\n\r\n await zipStorage.loadFromUint8Array(zipFile.content, zipFile.name);\r\n\r\n zipFile.fileContainerStorage = zipStorage;\r\n }\r\n\r\n folderToLoadFrom = zipFile.fileContainerStorage.rootFolder;\r\n } else {\r\n folderToLoadFrom = undefined;\r\n }\r\n }\r\n }\r\n\r\n if (folderToLoadFrom) {\r\n this._defaultFolder = await folderToLoadFrom.ensureFolderFromRelativePath(\r\n prefixPaths[prefixPaths.length - 1]\r\n );\r\n } else {\r\n // Log.debugAlert(\"Unable to parse a containerized file path of '\" + this.storagePath + \"'\");\r\n return null;\r\n }\r\n } else {\r\n this._defaultFolder = await this._project.projectFolder.ensureFolderFromRelativePath(this.projectPath);\r\n }\r\n\r\n await this._defaultFolder.load();\r\n\r\n this._onFolderRetrieved.dispatch(this, this._defaultFolder);\r\n\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n const mcworld = await MCWorld.ensureMCWorldOnFolder(\r\n this._defaultFolder,\r\n this._project,\r\n this._handleMCWorldLoaded\r\n );\r\n\r\n if (mcworld) {\r\n this.errorMessage = mcworld.storageErrorMessage;\r\n\r\n if (mcworld.storageErrorStatus === StorageErrorStatus.unprocessable) {\r\n this.errorStatus = ProjectItemErrorStatus.unprocessable;\r\n } else {\r\n this.errorStatus = ProjectItemErrorStatus.none;\r\n }\r\n }\r\n } else {\r\n this._fireLoadedEvent();\r\n }\r\n }\r\n\r\n return this._defaultFolder;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n _handleMCWorldLoaded(world: MCWorld, worldA: MCWorld) {\r\n this._fireLoadedEvent();\r\n }\r\n\r\n _fireLoadedEvent() {\r\n if (this._onLoaded && this.isLoaded) {\r\n this._onLoaded.dispatch(this, this);\r\n }\r\n }\r\n\r\n async getManager() {\r\n await this.load();\r\n\r\n if (this.storageType === ProjectItemStorageType.singleFile && this._defaultFile) {\r\n return this._defaultFile.manager;\r\n }\r\n\r\n if (this.storageType === ProjectItemStorageType.folder && this._defaultFolder) {\r\n return this._defaultFolder.manager;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async ensureStorage() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n await this.ensureFolderStorage();\r\n } else if (this.storageType === ProjectItemStorageType.singleFile) {\r\n await this.ensureFileStorage();\r\n }\r\n }\r\n\r\n async ensureFileStorage() {\r\n if (\r\n this.storageType === ProjectItemStorageType.singleFile &&\r\n this._defaultFile === null &&\r\n this.projectPath !== null &&\r\n this.projectPath !== undefined &&\r\n this.projectPath.startsWith(\"/\") &&\r\n this._project.projectFolder !== null &&\r\n this._project.projectFolder !== undefined\r\n ) {\r\n const prefixPaths = this.projectPath.split(\"#\");\r\n\r\n if (prefixPaths.length > 1) {\r\n let folderToLoadFrom: IFolder | undefined = this._project.projectFolder;\r\n\r\n for (let i = 0; i < prefixPaths.length - 1; i++) {\r\n if (folderToLoadFrom) {\r\n const zipFile: IFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[i]);\r\n\r\n await zipFile.loadContent();\r\n\r\n if (zipFile.content && zipFile.content instanceof Uint8Array) {\r\n if (!zipFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n zipStorage.storagePath = zipFile.storageRelativePath + \"#\";\r\n\r\n await zipStorage.loadFromUint8Array(zipFile.content, zipFile.name);\r\n\r\n zipFile.fileContainerStorage = zipStorage;\r\n }\r\n\r\n folderToLoadFrom = zipFile.fileContainerStorage.rootFolder;\r\n } else {\r\n folderToLoadFrom = undefined;\r\n }\r\n }\r\n }\r\n\r\n if (folderToLoadFrom) {\r\n this._defaultFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[prefixPaths.length - 1]);\r\n this._isFileContentProcessed = false;\r\n } else {\r\n Log.debugAlert(\"Unable to parse a containerized file path of '\" + this.projectPath + \"'\");\r\n return null;\r\n }\r\n } else {\r\n this._defaultFile = await this._project.projectFolder.ensureFileFromRelativePath(this.projectPath);\r\n this._isFileContentProcessed = false;\r\n }\r\n }\r\n\r\n const variants = this.getVariantList();\r\n\r\n for (const variant of variants) {\r\n await variant.ensureFileStorage();\r\n }\r\n\r\n if (!this._isFileContentProcessed && this._defaultFile) {\r\n if (this._data.creationType === ProjectItemCreationType.generated) {\r\n await ProjectAutogeneration.updateItemAutogeneration(this, true);\r\n } else {\r\n await this._defaultFile.loadContent();\r\n }\r\n\r\n await ProjectAutogeneration.updateItemAutogeneratedSideFiles(this);\r\n\r\n this._isFileContentProcessed = true;\r\n\r\n this._onFileRetrieved.dispatch(this, this._defaultFile);\r\n\r\n if (this.itemType === ProjectItemType.MCWorld || this.itemType === ProjectItemType.MCTemplate) {\r\n const mcworld = await MCWorld.ensureOnFile(this._defaultFile, this._project, this._handleMCWorldLoaded);\r\n\r\n if (mcworld) {\r\n this.errorMessage = mcworld.storageErrorMessage;\r\n\r\n if (mcworld.storageErrorStatus === StorageErrorStatus.unprocessable) {\r\n this.errorStatus = ProjectItemErrorStatus.unprocessable;\r\n } else {\r\n this.errorStatus = ProjectItemErrorStatus.none;\r\n }\r\n }\r\n } else if (this.itemType === ProjectItemType.entityTypeBehavior) {\r\n await EntityTypeDefinition.ensureOnFile(this._defaultFile);\r\n\r\n this._fireLoadedEvent();\r\n } else {\r\n this._fireLoadedEvent();\r\n }\r\n }\r\n\r\n return this._defaultFile;\r\n }\r\n\r\n async getJsonObject(): Promise<object | undefined> {\r\n let strContent = await this.getStringContent();\r\n\r\n if (!strContent) {\r\n return undefined;\r\n }\r\n\r\n let obj = undefined;\r\n\r\n try {\r\n strContent = Utilities.fixJsonContent(strContent);\r\n obj = JSON.parse(strContent);\r\n } catch (e) {\r\n Log.debug(\"Could not parse content '\" + strContent + \"': \" + e, this.project.name);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async getStringContent(): Promise<string | undefined> {\r\n await this.load();\r\n\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n await this._defaultFile.loadContent();\r\n\r\n if (this._defaultFile.content instanceof Uint8Array || this._defaultFile.content === null) {\r\n return undefined;\r\n }\r\n\r\n return this._defaultFile.content;\r\n }\r\n\r\n async load() {\r\n if (this.isLoaded) {\r\n return true;\r\n }\r\n\r\n if (this._isLoading) {\r\n const pendingLoad = this._pendingLoadRequests;\r\n\r\n const prom = (resolve: (value: unknown) => void, reject: (reason?: any) => void) => {\r\n pendingLoad.push(resolve);\r\n };\r\n\r\n await new Promise(prom);\r\n\r\n return true;\r\n } else {\r\n this._isLoading = true;\r\n\r\n await this.ensureStorage();\r\n\r\n this._isLoading = false;\r\n\r\n const pendingLoad = this._pendingLoadRequests;\r\n this._pendingLoadRequests = [];\r\n\r\n for (const prom of pendingLoad) {\r\n prom(undefined);\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n async prepareToSave() {\r\n await this.load();\r\n\r\n await ProjectAutogeneration.updateItemAutogeneration(this);\r\n await ProjectAutogeneration.updateItemAutogeneratedSideFiles(this);\r\n\r\n if (\r\n !this.isInFileContainer &&\r\n this.isFileContainerStorageItem &&\r\n this.defaultFile &&\r\n this.defaultFile.fileContainerStorage &&\r\n this.defaultFile.fileContainerStorage instanceof ZipStorage\r\n ) {\r\n const zs = this.defaultFile.fileContainerStorage as ZipStorage;\r\n\r\n if (zs.isContentUpdated && (zs.errorStatus === undefined || zs.errorStatus === StorageErrorStatus.none)) {\r\n const op = await this._project.carto.notifyOperationStarted(\r\n \"Zipping file '\" + this.defaultFile.storageRelativePath + \"'...\"\r\n );\r\n const bytes = await zs.generateUint8ArrayAsync();\r\n await this._project.carto.notifyOperationEnded(\r\n op,\r\n \"Done zipping file '\" + this.defaultFile.storageRelativePath + \"'.\"\r\n );\r\n\r\n this.defaultFile.setContent(bytes);\r\n }\r\n }\r\n }\r\n\r\n getJavaScriptLibTwin() {\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.ts) {\r\n const libScriptsFolder = this.project.getLibScriptsFolder();\r\n\r\n if (!libScriptsFolder) {\r\n return undefined;\r\n }\r\n\r\n const jsTwinName = StorageUtilities.canonicalizeName(\r\n StorageUtilities.getBaseFromName(this._defaultFile.name) + \".js\"\r\n );\r\n\r\n return libScriptsFolder.ensureFile(jsTwinName);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFunctionTwin() {\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.actionSet) {\r\n const functionTwinName = StorageUtilities.canonicalizeName(\r\n StorageUtilities.getBaseFromName(this._defaultFile.name) + \".mcfunction\"\r\n );\r\n\r\n let functionFolder = this._defaultFile.parentFolder;\r\n\r\n if (functionFolder.name === \"scripts\" && functionFolder.parentFolder) {\r\n functionFolder = functionFolder.parentFolder.ensureFolder(\"functions\");\r\n }\r\n\r\n return functionFolder.files[functionTwinName];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async saveContent() {\r\n if (this._defaultFile) {\r\n await this._defaultFile.saveContent();\r\n\r\n // these next two are associated with action set\r\n /*const jsFile = this.getJavaScriptLibTwin();\r\n\r\n if (jsFile !== undefined && jsFile.needsSave) {\r\n await jsFile.saveContent();\r\n }*/\r\n\r\n const functionFile = this.getFunctionTwin();\r\n\r\n if (functionFile !== undefined && functionFile.needsSave) {\r\n await functionFile.saveContent();\r\n }\r\n }\r\n }\r\n\r\n hasTag(name: string) {\r\n return this.tags.includes(name);\r\n }\r\n\r\n ensureTag(name: string) {\r\n if (this.hasTag(name)) {\r\n return;\r\n }\r\n\r\n this.tags.push(name);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/app/ProjectItem.ts"],"names":[],"mappings":"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","file":"../../app/ProjectItem.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport IProjectItemData, {\r\n ProjectItemCreationType,\r\n ProjectItemEditPreference,\r\n ProjectItemErrorStatus,\r\n ProjectItemStorageType,\r\n} from \"./IProjectItemData\";\r\nimport Log from \"./../core/Log\";\r\nimport { ProjectItemType } from \"./IProjectItemData\";\r\nimport Project from \"./Project\";\r\nimport { EventDispatcher } from \"ste-events\";\r\nimport IFile from \"../storage/IFile\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport StorageUtilities from \"../storage/StorageUtilities\";\r\nimport IGitHubInfo from \"./IGitHubInfo\";\r\nimport EntityTypeDefinition from \"../minecraft/EntityTypeDefinition\";\r\nimport { ProjectEditPreference } from \"./IProjectData\";\r\nimport MCWorld from \"../minecraft/MCWorld\";\r\nimport ZipStorage from \"../storage/ZipStorage\";\r\nimport Utilities from \"../core/Utilities\";\r\nimport { StorageErrorStatus } from \"../storage/IStorage\";\r\nimport ProjectItemUtilities from \"./ProjectItemUtilities\";\r\nimport Pack from \"../minecraft/Pack\";\r\nimport ProjectAutogeneration from \"./ProjectAutogeneration\";\r\nimport ProjectItemRelationship from \"./IProjectItemRelationship\";\r\nimport IProjectItemRelationship from \"./IProjectItemRelationship\";\r\nimport IProjectItemUnfulfilledRelationship from \"./IProjectItemUnfulfilledRelationship\";\r\nimport ProjectItemRelations from \"./ProjectItemRelations\";\r\nimport ProjectItemVariant from \"./ProjectItemVariant\";\r\nimport { ProjectItemVariantType } from \"./IProjectItemVariant\";\r\nimport Database from \"../minecraft/Database\";\r\n\r\nexport default class ProjectItem {\r\n private _data: IProjectItemData;\r\n private _project: Project;\r\n private _onPropertyChanged = new EventDispatcher<ProjectItem, string>();\r\n private _onFileRetrieved = new EventDispatcher<ProjectItem, IFile>();\r\n private _onFolderRetrieved = new EventDispatcher<ProjectItem, IFolder>();\r\n private _onLoaded = new EventDispatcher<ProjectItem, ProjectItem>();\r\n private _defaultFile: IFile | null;\r\n private _defaultFolder: IFolder | null;\r\n private _pendingLoadRequests: ((value: unknown) => void)[] = [];\r\n private _isLoading: boolean = false;\r\n private _isFileContentProcessed: boolean = false;\r\n private _imageUrlBase64Cache: string | undefined;\r\n private _pack: Pack | undefined;\r\n\r\n public parentItems: ProjectItemRelationship[] | undefined;\r\n public childItems: ProjectItemRelationship[] | undefined;\r\n public unfulfilledRelationships: IProjectItemUnfulfilledRelationship[] | undefined;\r\n\r\n public variants: { [label: string]: ProjectItemVariant };\r\n\r\n constructor(parent: Project, incomingData?: IProjectItemData) {\r\n this._project = parent;\r\n this._defaultFile = null;\r\n this._defaultFolder = null;\r\n this._isFileContentProcessed = false;\r\n this.variants = {};\r\n this._handleMCWorldLoaded = this._handleMCWorldLoaded.bind(this);\r\n this.sortVariantsMostImportantFirst = this.sortVariantsMostImportantFirst.bind(this);\r\n this.sortVariantsMostImportantLast = this.sortVariantsMostImportantLast.bind(this);\r\n if (incomingData) {\r\n this._data = incomingData;\r\n } else {\r\n this._data = {\r\n variants: {},\r\n itemType: ProjectItemType.unknown,\r\n projectPath: null,\r\n storageType: ProjectItemStorageType.singleFile,\r\n tags: [],\r\n name: \"\",\r\n };\r\n }\r\n }\r\n\r\n public get parentItemCount() {\r\n if (this.parentItems === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.parentItems.length;\r\n }\r\n\r\n public get childItemCount() {\r\n if (this.childItems === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.childItems.length;\r\n }\r\n\r\n public get unfulfilledRelationshipsCount() {\r\n if (this.unfulfilledRelationships === undefined) {\r\n return 0;\r\n }\r\n\r\n return this.unfulfilledRelationships.length;\r\n }\r\n\r\n public get isInWorld() {\r\n return this._data.isInWorld;\r\n }\r\n\r\n public set isInWorld(isInWorld: boolean | undefined) {\r\n this._data.isInWorld = isInWorld;\r\n }\r\n\r\n public get project() {\r\n return this._project;\r\n }\r\n\r\n public get onPropertyChanged() {\r\n return this._onPropertyChanged.asEvent();\r\n }\r\n\r\n public get onLoaded() {\r\n return this._onLoaded.asEvent();\r\n }\r\n\r\n public get onFileRetrieved() {\r\n return this._onFileRetrieved.asEvent();\r\n }\r\n\r\n public get onFolderRetrieved() {\r\n return this._onFolderRetrieved.asEvent();\r\n }\r\n\r\n public get gitHubReference() {\r\n return this._data.gitHubReference;\r\n }\r\n\r\n public get isInFileContainer() {\r\n if (!this.projectPath) {\r\n return false;\r\n }\r\n\r\n return this.projectPath.indexOf(\"#\") >= 0;\r\n }\r\n\r\n public get isFileContainerStorageItem() {\r\n return (\r\n this.itemType === ProjectItemType.zip ||\r\n this.itemType === ProjectItemType.MCWorld ||\r\n this.itemType === ProjectItemType.MCProject ||\r\n this.itemType === ProjectItemType.MCAddon ||\r\n this.itemType === ProjectItemType.MCPack ||\r\n this.itemType === ProjectItemType.MCTemplate\r\n );\r\n }\r\n\r\n public get isWorld() {\r\n return (\r\n this.itemType === ProjectItemType.MCProject ||\r\n this.itemType === ProjectItemType.MCWorld ||\r\n this.itemType === ProjectItemType.MCTemplate ||\r\n this.itemType === ProjectItemType.worldFolder\r\n );\r\n }\r\n\r\n static getGitHubSignature(info: IGitHubInfo) {\r\n let sig = info.owner + \"|\" + info.repoName + \"|\";\r\n\r\n if (info.branch !== undefined) {\r\n sig += info.branch;\r\n }\r\n\r\n if (info.folder !== undefined) {\r\n sig += \"|\" + info.folder;\r\n }\r\n\r\n return sig;\r\n }\r\n\r\n get defaultVariant() {\r\n return this.ensureVariant(\"\");\r\n }\r\n\r\n getVariantList() {\r\n const vararr = [];\r\n\r\n for (const key in this._data.variants) {\r\n const variant = this.ensureVariant(key);\r\n vararr.push(variant);\r\n }\r\n\r\n return vararr;\r\n }\r\n\r\n getVariantListMostImportantLast() {\r\n const vararr = [];\r\n\r\n const varKeys = Object.keys(this._data.variants);\r\n varKeys.sort(this.sortVariantsMostImportantLast);\r\n\r\n for (const key of varKeys) {\r\n const variant = this.ensureVariant(key);\r\n vararr.push(variant);\r\n }\r\n\r\n return vararr;\r\n }\r\n\r\n getVariantListMostImportantFirst() {\r\n const vararr = [];\r\n\r\n const varKeys = Object.keys(this._data.variants);\r\n varKeys.sort(this.sortVariantsMostImportantFirst);\r\n\r\n for (const key of varKeys) {\r\n const variant = this.ensureVariant(key);\r\n vararr.push(variant);\r\n }\r\n\r\n return vararr;\r\n }\r\n\r\n hasNonDefaultVariant() {\r\n const vararr = this.getVariantList();\r\n\r\n if (vararr.length === 0) {\r\n return false;\r\n }\r\n\r\n if (vararr.length > 1) {\r\n return true;\r\n }\r\n\r\n if (vararr[0].label !== \"\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ensureVariant(label: string) {\r\n if (!this.variants[label]) {\r\n const pv = this.project.ensureVariant(label);\r\n\r\n if (!this._data.variants) {\r\n this._data.variants = {};\r\n }\r\n\r\n if (this._data.variants[label] === undefined) {\r\n this._data.variants[label] = { label: label, variantType: ProjectItemVariantType.general };\r\n }\r\n\r\n this.variants[label] = new ProjectItemVariant(this, this._data.variants[label], pv);\r\n }\r\n\r\n return this.variants[label];\r\n }\r\n\r\n getFile(variantName?: string) {\r\n if (variantName === undefined || variantName === \"\") {\r\n return this._defaultFile;\r\n }\r\n\r\n const variant = this.ensureVariant(variantName);\r\n\r\n return variant.file;\r\n }\r\n\r\n getFolder(variantName?: string) {\r\n if (variantName === undefined || variantName === \"\") {\r\n return this._defaultFolder;\r\n }\r\n\r\n const variant = this.ensureVariant(variantName);\r\n\r\n return variant.folder;\r\n }\r\n\r\n getPack() {\r\n if (this._pack) {\r\n return this._pack;\r\n }\r\n\r\n let thisPath = undefined;\r\n\r\n if (this._defaultFile) {\r\n thisPath = this._defaultFile.storageRelativePath;\r\n } else if (this._defaultFolder) {\r\n thisPath = this._defaultFolder.storageRelativePath;\r\n }\r\n\r\n if (thisPath === undefined) {\r\n return undefined;\r\n }\r\n\r\n this.project.ensurePacks();\r\n\r\n for (const pack of this.project.packs) {\r\n if (thisPath.startsWith(pack.folder.storageRelativePath)) {\r\n this._pack = pack;\r\n return this._pack;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n addUnfulfilledRelationship(path: string, itemType: ProjectItemType, isVanillaDependent?: boolean) {\r\n let pir: IProjectItemUnfulfilledRelationship = {\r\n parentItem: this,\r\n path: path,\r\n itemType: itemType,\r\n isVanillaDependent: isVanillaDependent === true,\r\n };\r\n\r\n if (this.unfulfilledRelationships === undefined) {\r\n this.unfulfilledRelationships = [];\r\n }\r\n\r\n this.unfulfilledRelationships.push(pir);\r\n }\r\n\r\n addChildItem(childItem: ProjectItem) {\r\n if (ProjectItemUtilities.wouldBeCircular(childItem)) {\r\n return;\r\n }\r\n\r\n let pir: IProjectItemRelationship = {\r\n parentItem: this,\r\n childItem: childItem,\r\n };\r\n if (this.childItems === undefined) {\r\n this.childItems = [];\r\n }\r\n\r\n if (childItem.parentItems === undefined) {\r\n childItem.parentItems = [];\r\n }\r\n\r\n this.childItems.push(pir);\r\n childItem.parentItems.push(pir);\r\n }\r\n\r\n toString() {\r\n return this.itemType + \": \" + this.projectPath;\r\n }\r\n\r\n getPackRelativePath() {\r\n const pack = this.getPack();\r\n\r\n if (!pack) {\r\n return undefined;\r\n }\r\n\r\n if (this._defaultFile) {\r\n return this._defaultFile.getFolderRelativePath(pack.folder);\r\n } else if (this._defaultFolder) {\r\n return this._defaultFolder.getFolderRelativePath(pack.folder);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static gitHubReferencesEqual(refA: IGitHubInfo | undefined, refB: IGitHubInfo | undefined) {\r\n if (refA === refB) {\r\n return true;\r\n }\r\n\r\n if (refA === undefined && refB === undefined) {\r\n return true;\r\n }\r\n\r\n if (\r\n refA !== undefined &&\r\n refB !== undefined &&\r\n refA.owner === refB.owner &&\r\n refA.repoName === refB.repoName &&\r\n refA.folder === refB.folder &&\r\n refA.branch === refB.branch\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public set gitHubReference(value: IGitHubInfo | undefined) {\r\n if (ProjectItem.gitHubReferencesEqual(this._data.gitHubReference, value)) {\r\n return;\r\n }\r\n\r\n this._data.gitHubReference = value;\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n get title() {\r\n return (\r\n StorageUtilities.getContaineredFileLeafPath(this.projectPath) +\r\n \" (\" +\r\n ProjectItemUtilities.getDescriptionForType(this._data.itemType).toLowerCase() +\r\n \")\"\r\n );\r\n }\r\n\r\n get typeTitle() {\r\n return ProjectItemUtilities.getDescriptionForType(this._data.itemType);\r\n }\r\n\r\n getPackFolderName() {\r\n if (this.projectPath === undefined || this.projectPath === null) {\r\n return undefined;\r\n }\r\n let folderStoragePath = StorageUtilities.getFolderPath(this.projectPath);\r\n\r\n if (folderStoragePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n let folderStoragePathLower = folderStoragePath.toLowerCase();\r\n\r\n if (this.project.packs.length > 2) {\r\n const endOfPacks = folderStoragePathLower.indexOf(\"_packs/\");\r\n\r\n if (endOfPacks > 0) {\r\n const endOfPacksSegment = folderStoragePathLower.indexOf(\"/\", endOfPacks + 7);\r\n\r\n if (endOfPacksSegment > 0) {\r\n return folderStoragePath.substring(endOfPacks + 7, endOfPacksSegment);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFolderGroupingPath() {\r\n if (this.projectPath === undefined || this.projectPath === null) {\r\n return undefined;\r\n }\r\n\r\n let folderStoragePath = StorageUtilities.getFolderPath(this.projectPath);\r\n\r\n if (folderStoragePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n let folderStoragePathLower = folderStoragePath.toLowerCase();\r\n\r\n const folderTypeRoots = ProjectItemUtilities.getFolderRootsForType(this.itemType);\r\n\r\n folderTypeRoots.push(\"zip\");\r\n\r\n for (const folderTypeRoot of folderTypeRoots) {\r\n const start = folderStoragePathLower.indexOf(\"/\" + folderTypeRoot + \"/\");\r\n\r\n if (start >= 0) {\r\n let packPrefix = this.getPackFolderName();\r\n\r\n if (packPrefix === undefined) {\r\n packPrefix = \"\";\r\n } else {\r\n packPrefix += \" \";\r\n }\r\n\r\n folderStoragePath = packPrefix + folderStoragePath.substring(start + 2 + folderTypeRoot.length);\r\n folderStoragePathLower = folderStoragePath.toLowerCase();\r\n }\r\n }\r\n\r\n folderStoragePath = folderStoragePath.replace(/#/gi, \" \").trim();\r\n\r\n return folderStoragePath;\r\n }\r\n\r\n getSchemaPath() {\r\n return ProjectItemUtilities.getSchemaPathForType(this.itemType);\r\n }\r\n\r\n get errorStatus() {\r\n return this._data.errorStatus;\r\n }\r\n\r\n set errorStatus(newErrorStatus: ProjectItemErrorStatus | undefined) {\r\n this._data.errorStatus = newErrorStatus;\r\n }\r\n\r\n get source() {\r\n return this._data.source;\r\n }\r\n\r\n set source(newSource: string | undefined) {\r\n this._data.source = newSource;\r\n }\r\n\r\n get errorMessage() {\r\n return this._data.errorMessage;\r\n }\r\n\r\n set errorMessage(newErrorMessage: string | undefined) {\r\n this._data.errorMessage = newErrorMessage;\r\n }\r\n\r\n get projectPath() {\r\n if (this._data.projectPath === undefined && this._data.storagePath) {\r\n this._data.projectPath = this._data.storagePath;\r\n\r\n return this._data.storagePath;\r\n }\r\n\r\n return this._data.projectPath;\r\n }\r\n\r\n set projectPath(newBasePath: string | undefined | null) {\r\n this._data.projectPath = newBasePath;\r\n }\r\n\r\n get effectiveEditPreference() {\r\n const ep = this.editPreference;\r\n\r\n if (ep === ProjectItemEditPreference.projectDefault) {\r\n return this._project.editPreference;\r\n } else if (ep === ProjectItemEditPreference.forceRaw) {\r\n return ProjectEditPreference.raw;\r\n } else {\r\n return ProjectEditPreference.summarized;\r\n }\r\n }\r\n\r\n get editPreference() {\r\n if (this._data.editPreference === undefined) {\r\n return ProjectItemEditPreference.projectDefault;\r\n }\r\n\r\n return this._data.editPreference;\r\n }\r\n\r\n set editPreference(newEditPreference: ProjectItemEditPreference) {\r\n this._data.editPreference = newEditPreference;\r\n }\r\n\r\n get storageType() {\r\n if (this._data.storageType === undefined) {\r\n return ProjectItemStorageType.singleFile;\r\n }\r\n\r\n return this._data.storageType;\r\n }\r\n\r\n set storageType(newStorageType: ProjectItemStorageType) {\r\n this._data.storageType = newStorageType;\r\n }\r\n\r\n get creationType() {\r\n return this._data.creationType;\r\n }\r\n\r\n set creationType(newCreationType: ProjectItemCreationType | undefined) {\r\n this._data.creationType = newCreationType;\r\n }\r\n\r\n get itemType() {\r\n return this._data.itemType;\r\n }\r\n\r\n get defaultFile() {\r\n return this._defaultFile;\r\n }\r\n\r\n sortVariantsMostImportantLast(a: string, b: string) {\r\n if (!this.variants) {\r\n this.getVariantList();\r\n }\r\n\r\n if (!this.variants) {\r\n return a.localeCompare(b);\r\n }\r\n\r\n const va = this.variants[a];\r\n const vb = this.variants[b];\r\n\r\n if (!va || !vb || !va.label || !vb.label) {\r\n return 0;\r\n }\r\n\r\n if (\r\n va.variantType === ProjectItemVariantType.versionSlice &&\r\n vb.variantType === ProjectItemVariantType.versionSlice\r\n ) {\r\n const versionIndexA = Database.getVersionIndexFromVersionStr(va.label);\r\n const versionIndexB = Database.getVersionIndexFromVersionStr(vb.label);\r\n\r\n return versionIndexA - versionIndexB;\r\n }\r\n\r\n return va.label.toString().localeCompare(vb.label.toString());\r\n }\r\n\r\n sortVariantsMostImportantFirst(a: string, b: string) {\r\n if (!this.variants) {\r\n this.getVariantList();\r\n }\r\n\r\n if (!this.variants) {\r\n return a.localeCompare(b);\r\n }\r\n\r\n const va = this.variants[a];\r\n const vb = this.variants[b];\r\n\r\n if (!va || !vb || !va.label || !vb.label) {\r\n return 0;\r\n }\r\n\r\n if (\r\n va.variantType === ProjectItemVariantType.versionSlice &&\r\n vb.variantType === ProjectItemVariantType.versionSlice\r\n ) {\r\n const versionIndexA = Database.getVersionIndexFromVersionStr(va.label);\r\n const versionIndexB = Database.getVersionIndexFromVersionStr(vb.label);\r\n\r\n return versionIndexB - versionIndexA;\r\n }\r\n\r\n return vb.label.localeCompare(va.label);\r\n }\r\n\r\n get primaryVariantLabel(): string | undefined {\r\n const variantKeys = Object.keys(this.variants);\r\n\r\n // if we have version slices, return the latest one that has a file\r\n if (variantKeys.length > 0) {\r\n variantKeys.sort(this.sortVariantsMostImportantFirst);\r\n\r\n for (const variantName of variantKeys) {\r\n const variant = this.variants[variantName];\r\n\r\n if (variant.variantType === ProjectItemVariantType.versionSlice) {\r\n if (variant.file) {\r\n return variant.label;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n for (const variantName of variantKeys) {\r\n if (variantName) {\r\n const variant = this.variants[variantName];\r\n\r\n if (variant.file) {\r\n return variant.label;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n get primaryFile(): IFile | null {\r\n const variantKeys = Object.keys(this.variants);\r\n\r\n // if we have version slices, return the latest one that has a file\r\n if (variantKeys.length > 0) {\r\n variantKeys.sort(this.sortVariantsMostImportantFirst);\r\n\r\n for (const variantName of variantKeys) {\r\n const variant = this.variants[variantName];\r\n\r\n if (variant.variantType === ProjectItemVariantType.versionSlice) {\r\n if (variant.file) {\r\n return variant.file;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this._defaultFile) {\r\n return this._defaultFile;\r\n }\r\n\r\n for (const variantName of variantKeys) {\r\n if (variantName) {\r\n const variant = this.variants[variantName];\r\n\r\n if (variant.file) {\r\n return variant.file;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get defaultFolder() {\r\n return this._defaultFolder;\r\n }\r\n\r\n set itemType(newItemType) {\r\n this._data.itemType = newItemType;\r\n\r\n this._onPropertyChanged.dispatch(this, \"itemType\");\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n get isLoaded() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n if (!this.defaultFolder) {\r\n return false;\r\n }\r\n\r\n if (!this.defaultFolder.isLoaded) {\r\n return false;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (!this.defaultFolder.manager || !(this.defaultFolder.manager instanceof MCWorld)) {\r\n return false;\r\n }\r\n\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n return world.isLoaded;\r\n }\r\n\r\n return true;\r\n } else if (this.storageType === ProjectItemStorageType.singleFile) {\r\n const itemFile = this.primaryFile;\r\n\r\n if (!itemFile) {\r\n return false;\r\n }\r\n\r\n if (!itemFile.isContentLoaded) {\r\n return false;\r\n }\r\n\r\n if (this.isWorld) {\r\n if (!itemFile.manager || !(itemFile.manager instanceof MCWorld)) {\r\n return false;\r\n }\r\n\r\n const world = itemFile.manager as MCWorld;\r\n\r\n return world.isLoaded;\r\n }\r\n\r\n return this._isFileContentProcessed;\r\n }\r\n\r\n Log.unexpectedContentState();\r\n\r\n return false;\r\n }\r\n\r\n get tags() {\r\n return this._data.tags;\r\n }\r\n\r\n setFile(file: IFile) {\r\n if (file !== this._defaultFile) {\r\n this._defaultFile = file;\r\n this._isFileContentProcessed = false;\r\n }\r\n }\r\n\r\n get needsSave() {\r\n if (\r\n this._defaultFile === null &&\r\n this.creationType === ProjectItemCreationType.generated &&\r\n this.storageType === ProjectItemStorageType.singleFile\r\n ) {\r\n return true;\r\n }\r\n\r\n if (this._defaultFile === null) {\r\n return false;\r\n }\r\n\r\n let val = this._defaultFile.needsSave;\r\n\r\n if (!val) {\r\n if (\r\n this.isFileContainerStorageItem &&\r\n this._defaultFile.fileContainerStorage &&\r\n this._defaultFile.fileContainerStorage instanceof ZipStorage\r\n ) {\r\n val = (this._defaultFile.fileContainerStorage as ZipStorage).isContentUpdated;\r\n }\r\n\r\n if (!val) {\r\n const jsFile = this.getJavaScriptLibTwin();\r\n\r\n if (jsFile !== undefined) {\r\n val = jsFile.needsSave;\r\n }\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n updateProjectPath() {\r\n if (this._project && this._project.projectFolder) {\r\n if (this._defaultFile) {\r\n this.projectPath = this._defaultFile.getFolderRelativePath(this._project.projectFolder);\r\n } else if (this._defaultFolder) {\r\n this.projectPath = this._defaultFolder.getFolderRelativePath(this._project.projectFolder);\r\n }\r\n }\r\n }\r\n\r\n async rename(newFileBaseName: string) {\r\n await this.load();\r\n\r\n await this._project.ensureProjectFolder();\r\n\r\n if (this._project.projectFolder === undefined || this._project.projectFolder === null) {\r\n return;\r\n }\r\n\r\n if (this._defaultFile !== null) {\r\n await this._defaultFile.moveTo(\r\n this._defaultFile.parentFolder.storageRelativePath + newFileBaseName + \".\" + this._defaultFile.type\r\n );\r\n\r\n this._data.name = newFileBaseName + \".\" + this._defaultFile.type;\r\n\r\n this.projectPath = this._defaultFile.getFolderRelativePath(this._project.projectFolder);\r\n this.storageType = ProjectItemStorageType.singleFile;\r\n } else {\r\n this._data.name = newFileBaseName;\r\n }\r\n\r\n this._onPropertyChanged.dispatch(this, \"name\");\r\n\r\n this._project.notifyProjectItemChanged(this);\r\n }\r\n\r\n async deleteItem() {\r\n await this.load();\r\n\r\n await ProjectItemRelations.deleteLinksFromParents(this);\r\n\r\n if (this._defaultFile !== null) {\r\n await this._defaultFile.deleteThisFile();\r\n }\r\n\r\n this._project.removeItem(this);\r\n }\r\n\r\n get imageUrl() {\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (this.defaultFolder) {\r\n if (this.defaultFolder.manager instanceof MCWorld) {\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return \"data:image/jpg;base64, \" + world.imageBase64;\r\n }\r\n }\r\n }\r\n } else if (this.isWorld) {\r\n const itemFile = this.primaryFile;\r\n\r\n if (itemFile) {\r\n if (itemFile.manager instanceof MCWorld) {\r\n const world = itemFile.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return \"data:image/jpg;base64, \" + world.imageBase64;\r\n }\r\n }\r\n }\r\n } else if (ProjectItemUtilities.isImageType(this.itemType)) {\r\n if (this._imageUrlBase64Cache) {\r\n return this._imageUrlBase64Cache;\r\n }\r\n\r\n if (this._defaultFile && this._defaultFile.content && this._defaultFile.content instanceof Uint8Array) {\r\n this._imageUrlBase64Cache = \"data:image/jpg;base64, \" + Utilities.uint8ArrayToBase64(this._defaultFile.content);\r\n\r\n return this._imageUrlBase64Cache;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n get name() {\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n if (this.defaultFolder) {\r\n if (this.defaultFolder.manager instanceof MCWorld) {\r\n const world = this.defaultFolder.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return world.name;\r\n }\r\n }\r\n }\r\n } else if (this.itemType === ProjectItemType.MCWorld || this.itemType === ProjectItemType.MCTemplate) {\r\n const itemFile = this.primaryFile;\r\n\r\n if (itemFile) {\r\n if (itemFile.manager instanceof MCWorld) {\r\n const world = itemFile.manager as MCWorld;\r\n\r\n if (world.isLoaded) {\r\n return world.name;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // for certain types of project items, the name of the file is critical\r\n if (\r\n this.projectPath &&\r\n (this.itemType === ProjectItemType.js ||\r\n this.itemType === ProjectItemType.ts ||\r\n this.itemType === ProjectItemType.testJs ||\r\n this.itemType === ProjectItemType.structure)\r\n ) {\r\n return StorageUtilities.getLeafName(this.projectPath);\r\n }\r\n\r\n if (this._data.name !== undefined) {\r\n return this._data.name;\r\n }\r\n\r\n if (this.projectPath) {\r\n return StorageUtilities.getLeafName(this.projectPath);\r\n }\r\n\r\n return \"untitled\";\r\n }\r\n\r\n async ensureFolderStorage() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n if (\r\n this._defaultFolder === null &&\r\n this.projectPath !== null &&\r\n this.projectPath !== undefined &&\r\n this.projectPath.startsWith(\"/\") &&\r\n this._project.projectFolder !== null &&\r\n this._project.projectFolder !== undefined\r\n ) {\r\n const prefixPaths = this.projectPath.split(\"#\");\r\n\r\n if (prefixPaths.length > 1) {\r\n let folderToLoadFrom: IFolder | undefined = this._project.projectFolder;\r\n\r\n for (let i = 0; i < prefixPaths.length - 1; i++) {\r\n if (folderToLoadFrom) {\r\n const zipFile: IFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[i]);\r\n\r\n await zipFile.loadContent();\r\n\r\n if (zipFile.content && zipFile.content instanceof Uint8Array) {\r\n if (!zipFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n zipStorage.storagePath = zipFile.storageRelativePath + \"#\";\r\n\r\n await zipStorage.loadFromUint8Array(zipFile.content, zipFile.name);\r\n\r\n zipFile.fileContainerStorage = zipStorage;\r\n }\r\n\r\n folderToLoadFrom = zipFile.fileContainerStorage.rootFolder;\r\n } else {\r\n folderToLoadFrom = undefined;\r\n }\r\n }\r\n }\r\n\r\n if (folderToLoadFrom) {\r\n this._defaultFolder = await folderToLoadFrom.ensureFolderFromRelativePath(\r\n prefixPaths[prefixPaths.length - 1]\r\n );\r\n } else {\r\n // Log.debugAlert(\"Unable to parse a containerized file path of '\" + this.storagePath + \"'\");\r\n return null;\r\n }\r\n } else {\r\n this._defaultFolder = await this._project.projectFolder.ensureFolderFromRelativePath(this.projectPath);\r\n }\r\n\r\n await this._defaultFolder.load();\r\n\r\n this._onFolderRetrieved.dispatch(this, this._defaultFolder);\r\n\r\n if (this.itemType === ProjectItemType.worldFolder) {\r\n const mcworld = await MCWorld.ensureMCWorldOnFolder(\r\n this._defaultFolder,\r\n this._project,\r\n this._handleMCWorldLoaded\r\n );\r\n\r\n if (mcworld) {\r\n this.errorMessage = mcworld.storageErrorMessage;\r\n\r\n if (mcworld.storageErrorStatus === StorageErrorStatus.unprocessable) {\r\n this.errorStatus = ProjectItemErrorStatus.unprocessable;\r\n } else {\r\n this.errorStatus = ProjectItemErrorStatus.none;\r\n }\r\n }\r\n } else {\r\n this._fireLoadedEvent();\r\n }\r\n }\r\n\r\n return this._defaultFolder;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n _handleMCWorldLoaded(world: MCWorld, worldA: MCWorld) {\r\n this._fireLoadedEvent();\r\n }\r\n\r\n _fireLoadedEvent() {\r\n if (this._onLoaded && this.isLoaded) {\r\n this._onLoaded.dispatch(this, this);\r\n }\r\n }\r\n\r\n async getManager() {\r\n await this.load();\r\n\r\n if (this.storageType === ProjectItemStorageType.singleFile && this._defaultFile) {\r\n return this._defaultFile.manager;\r\n }\r\n\r\n if (this.storageType === ProjectItemStorageType.folder && this._defaultFolder) {\r\n return this._defaultFolder.manager;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async ensureStorage() {\r\n if (this.storageType === ProjectItemStorageType.folder) {\r\n await this.ensureFolderStorage();\r\n } else if (this.storageType === ProjectItemStorageType.singleFile) {\r\n await this.ensureFileStorage();\r\n }\r\n }\r\n\r\n async ensureFileStorage() {\r\n if (\r\n this.storageType === ProjectItemStorageType.singleFile &&\r\n this._defaultFile === null &&\r\n this.projectPath !== null &&\r\n this.projectPath !== undefined &&\r\n this.projectPath.startsWith(\"/\") &&\r\n this._project.projectFolder !== null &&\r\n this._project.projectFolder !== undefined\r\n ) {\r\n const prefixPaths = this.projectPath.split(\"#\");\r\n\r\n if (prefixPaths.length > 1) {\r\n let folderToLoadFrom: IFolder | undefined = this._project.projectFolder;\r\n\r\n for (let i = 0; i < prefixPaths.length - 1; i++) {\r\n if (folderToLoadFrom) {\r\n const zipFile: IFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[i]);\r\n\r\n await zipFile.loadContent();\r\n\r\n if (zipFile.content && zipFile.content instanceof Uint8Array) {\r\n if (!zipFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n zipStorage.storagePath = zipFile.storageRelativePath + \"#\";\r\n\r\n await zipStorage.loadFromUint8Array(zipFile.content, zipFile.name);\r\n\r\n zipFile.fileContainerStorage = zipStorage;\r\n }\r\n\r\n folderToLoadFrom = zipFile.fileContainerStorage.rootFolder;\r\n } else {\r\n folderToLoadFrom = undefined;\r\n }\r\n }\r\n }\r\n\r\n if (folderToLoadFrom) {\r\n this._defaultFile = await folderToLoadFrom.ensureFileFromRelativePath(prefixPaths[prefixPaths.length - 1]);\r\n this._isFileContentProcessed = false;\r\n } else {\r\n Log.debugAlert(\"Unable to parse a containerized file path of '\" + this.projectPath + \"'\");\r\n return null;\r\n }\r\n } else {\r\n this._defaultFile = await this._project.projectFolder.ensureFileFromRelativePath(this.projectPath);\r\n this._isFileContentProcessed = false;\r\n }\r\n }\r\n\r\n const variants = this.getVariantList();\r\n\r\n for (const variant of variants) {\r\n await variant.ensureFileStorage();\r\n }\r\n\r\n if (!this._isFileContentProcessed && this._defaultFile) {\r\n if (this._data.creationType === ProjectItemCreationType.generated) {\r\n await ProjectAutogeneration.updateItemAutogeneration(this, true);\r\n } else {\r\n await this._defaultFile.loadContent();\r\n }\r\n\r\n await ProjectAutogeneration.updateItemAutogeneratedSideFiles(this);\r\n\r\n this._isFileContentProcessed = true;\r\n\r\n this._onFileRetrieved.dispatch(this, this._defaultFile);\r\n\r\n if (this.itemType === ProjectItemType.MCWorld || this.itemType === ProjectItemType.MCTemplate) {\r\n const mcworld = await MCWorld.ensureOnFile(this._defaultFile, this._project, this._handleMCWorldLoaded);\r\n\r\n if (mcworld) {\r\n this.errorMessage = mcworld.storageErrorMessage;\r\n\r\n if (mcworld.storageErrorStatus === StorageErrorStatus.unprocessable) {\r\n this.errorStatus = ProjectItemErrorStatus.unprocessable;\r\n } else {\r\n this.errorStatus = ProjectItemErrorStatus.none;\r\n }\r\n }\r\n } else if (this.itemType === ProjectItemType.entityTypeBehavior) {\r\n await EntityTypeDefinition.ensureOnFile(this._defaultFile);\r\n\r\n this._fireLoadedEvent();\r\n } else {\r\n this._fireLoadedEvent();\r\n }\r\n }\r\n\r\n return this._defaultFile;\r\n }\r\n\r\n async getJsonObject(): Promise<object | undefined> {\r\n let strContent = await this.getStringContent();\r\n\r\n if (!strContent) {\r\n return undefined;\r\n }\r\n\r\n let obj = undefined;\r\n\r\n try {\r\n strContent = Utilities.fixJsonContent(strContent);\r\n obj = JSON.parse(strContent);\r\n } catch (e) {\r\n Log.debug(\"Could not parse content '\" + strContent + \"': \" + e, this.project.name);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async getStringContent(): Promise<string | undefined> {\r\n await this.load();\r\n\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n await this._defaultFile.loadContent();\r\n\r\n if (this._defaultFile.content instanceof Uint8Array || this._defaultFile.content === null) {\r\n return undefined;\r\n }\r\n\r\n return this._defaultFile.content;\r\n }\r\n\r\n async load() {\r\n if (this.isLoaded) {\r\n return true;\r\n }\r\n\r\n if (this._isLoading) {\r\n const pendingLoad = this._pendingLoadRequests;\r\n\r\n const prom = (resolve: (value: unknown) => void, reject: (reason?: any) => void) => {\r\n pendingLoad.push(resolve);\r\n };\r\n\r\n await new Promise(prom);\r\n\r\n return true;\r\n } else {\r\n this._isLoading = true;\r\n\r\n await this.ensureStorage();\r\n\r\n this._isLoading = false;\r\n\r\n const pendingLoad = this._pendingLoadRequests;\r\n this._pendingLoadRequests = [];\r\n\r\n for (const prom of pendingLoad) {\r\n prom(undefined);\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n async prepareToSave() {\r\n await this.load();\r\n\r\n await ProjectAutogeneration.updateItemAutogeneration(this);\r\n await ProjectAutogeneration.updateItemAutogeneratedSideFiles(this);\r\n\r\n if (\r\n !this.isInFileContainer &&\r\n this.isFileContainerStorageItem &&\r\n this.primaryFile &&\r\n this.primaryFile.fileContainerStorage &&\r\n this.primaryFile.fileContainerStorage instanceof ZipStorage\r\n ) {\r\n const zs = this.primaryFile.fileContainerStorage as ZipStorage;\r\n\r\n if (zs.isContentUpdated && (zs.errorStatus === undefined || zs.errorStatus === StorageErrorStatus.none)) {\r\n const op = await this._project.carto.notifyOperationStarted(\r\n \"Zipping file '\" + this.primaryFile.storageRelativePath + \"'...\"\r\n );\r\n const bytes = await zs.generateUint8ArrayAsync();\r\n await this._project.carto.notifyOperationEnded(\r\n op,\r\n \"Done zipping file '\" + this.primaryFile.storageRelativePath + \"'.\"\r\n );\r\n\r\n this.primaryFile.setContent(bytes);\r\n }\r\n }\r\n }\r\n\r\n getJavaScriptLibTwin() {\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.ts) {\r\n const libScriptsFolder = this.project.getLibScriptsFolder();\r\n\r\n if (!libScriptsFolder) {\r\n return undefined;\r\n }\r\n\r\n const jsTwinName = StorageUtilities.canonicalizeName(\r\n StorageUtilities.getBaseFromName(this._defaultFile.name) + \".js\"\r\n );\r\n\r\n return libScriptsFolder.ensureFile(jsTwinName);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFunctionTwin() {\r\n if (!this._defaultFile) {\r\n return undefined;\r\n }\r\n\r\n if (this.itemType === ProjectItemType.actionSet) {\r\n const functionTwinName = StorageUtilities.canonicalizeName(\r\n StorageUtilities.getBaseFromName(this._defaultFile.name) + \".mcfunction\"\r\n );\r\n\r\n let functionFolder = this._defaultFile.parentFolder;\r\n\r\n if (functionFolder.name === \"scripts\" && functionFolder.parentFolder) {\r\n functionFolder = functionFolder.parentFolder.ensureFolder(\"functions\");\r\n }\r\n\r\n return functionFolder.files[functionTwinName];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n async saveContent() {\r\n if (this._defaultFile) {\r\n await this._defaultFile.saveContent();\r\n\r\n // these next two are associated with action set\r\n const jsFile = this.getJavaScriptLibTwin();\r\n\r\n if (jsFile !== undefined && jsFile.needsSave) {\r\n await jsFile.saveContent();\r\n }\r\n\r\n const functionFile = this.getFunctionTwin();\r\n\r\n if (functionFile !== undefined && functionFile.needsSave) {\r\n await functionFile.saveContent();\r\n }\r\n }\r\n }\r\n\r\n hasTag(name: string) {\r\n return this.tags.includes(name);\r\n }\r\n\r\n ensureTag(name: string) {\r\n if (this.hasTag(name)) {\r\n return;\r\n }\r\n\r\n this.tags.push(name);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/app/ProjectItemCreateManager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,uCAAmD;AACnD,qDAA8C;AAC9C,iDAAuD;AACvD,yDAAsG;AACtG,oEAA6D;AAC7D,sDAA+C;AAE/C,iEAA0D;AAE1D,mEAA4D;AAE5D,oDAA6C;AAC7C,qCAA8B;AAC9B,oGAA6F;AAC7F,gFAAyE;AAEzE,wEAAiE;AACjE,iDAA+D;AAC/D,yDAA4E;AAE5E,6CAA6C;AAE7C,MAAqB,wBAAwB;IACnC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAgB;QAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAEjE,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE1E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,OAAgB,EAAE,IAAY;QACnF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAEjE,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE3E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAgB;QAC/D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAEjE,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE1E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,OAAgB,EAAE,IAAY;QACnF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAEjE,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE3E,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,OAAgB;QAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAE9D,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE/E,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,QAA0B;QACrE,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YACvD,QAAQ,CAAC,IAAI,GAAG,8BAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACxE;QAED,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,QAAQ,QAAQ,CAAC,QAAQ,EAAE;gBACzB,KAAK,kCAAe,CAAC,EAAE,CAAC;gBACxB,KAAK,kCAAe,CAAC,EAAE;oBACrB,OAAO,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAE9G,KAAK,kCAAe,CAAC,QAAQ;oBAC3B,OAAO,wBAAwB,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAEzF,KAAK,kCAAe,CAAC,KAAK;oBACxB,OAAO,wBAAwB,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC3F;SACF;QAED,IAAI,8BAAoB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC7D,OAAO,wBAAwB,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC/E;aAAM,IAAI,8BAAoB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACpE,OAAO,wBAAwB,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC/E;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAgB,EAAE,QAAyB,EAAE,IAAY,EAAE,MAA2B;QACjH,IAAI,WAAW,GAAG,SAAS,CAAC;QAE5B,IAAI,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE;YACnC,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACnE;aAAM;YACL,WAAW,GAAG,MAAM,wBAAwB,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;SACpF;QAED,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,KAAK,kCAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC9C,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,QAAQ,KAAK,kCAAe,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAe,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAe,CAAC,EAAE,EACzE,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,OAAO,CAAC,uBAAuB,KAAK,oCAAqB,CAAC,UAAU,EAAE;gBACxE,IAAI,CAAC,UAAU,CAAC,wBAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC5E;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,wBAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC5E;SACF;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,OAAgB,EAAE,QAAgB,EAAE,QAAgB;QAC7F,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,mBAAmB,GAAG,EAAE,CAAC;QAC7B,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,eAAe,GAAG,IAAI,CAAC;QAE3B,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,YAAY,GAAG,aAAa,CAAC;QAEjC,OAAO,IAAI,GAAG,CAAC,EAAE;YACf,sCAAsC;YACtC,IAAI,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACxC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAI,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBACvD,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/E;YAED,eAAe,IAAI,iBAAiB,GAAG,GAAG,CAAC;YAE3C,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEpF,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,SAAS,CAAC;aAClB;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC;YAErC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;gBAChF,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;gBACvC,MAAM,UAAU,GAAG,IAAI,oBAAU,EAAE,CAAC;gBAEpC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;gBAElC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE;oBAC5E,OAAO,SAAS,CAAC;iBAClB;gBAED,MAAM,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC/E,aAAa,CAAC,oBAAoB,GAAG,UAAU,CAAC;gBAChD,aAAa,CAAC,oBAAoB,CAAC,WAAW,GAAG,iBAAiB,GAAG,GAAG,CAAC;aAC1E;YAED,YAAY,GAAG,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC;SAC9D;QAED,MAAM,YAAY,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAElC,gCAAgC;QAChC,GAAG;YACD,KAAK,EAAE,CAAC;YACR,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;YAClD,eAAe,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;SACrF,QAAQ,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,SAAS,EAAE;QAEpE,OAAO,eAAe,GAAG,mBAAmB,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAgB,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB;QAC9G,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAC3B,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,aAAa,GAAG,IAAI,CAAC;QAEzB,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,YAAY,GAAG,aAAa,CAAC;QAEjC,OAAO,IAAI,GAAG,CAAC,EAAE;YACf,sCAAsC;YACtC,IAAI,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACxC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAI,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBACvD,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/E;YAED,eAAe,IAAI,iBAAiB,GAAG,GAAG,CAAC;YAE3C,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEpF,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,SAAS,CAAC;aAClB;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC;YAErC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;gBAChF,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;gBACvC,MAAM,UAAU,GAAG,IAAI,oBAAU,EAAE,CAAC;gBAEpC,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;gBAElC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE;oBAC5E,OAAO,SAAS,CAAC;iBAClB;gBAED,MAAM,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC3D,aAAa,CAAC,oBAAoB,GAAG,UAAU,CAAC;gBAChD,aAAa,CAAC,oBAAoB,CAAC,WAAW,GAAG,iBAAiB,GAAG,GAAG,CAAC;aAC1E;YAED,YAAY,GAAG,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC;SAC9D;QAED,MAAM,YAAY,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAElC,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;QAC1D,aAAa,GAAG,MAAM,YAAY,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAE9E,IAAI,aAAa,EAAE;YACjB,6BAA6B;YAC7B,GAAG;gBACD,KAAK,EAAE,CAAC;gBACR,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC;gBAClE,aAAa,GAAG,MAAM,YAAY,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;aAC/E,QAAQ,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE;SACjE;QAED,OAAO,eAAe,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAgB;QACnD,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzG,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,WAAW,EACX,MAAM,EACN,IAAI,CACL,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EAEjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,MAAM,EACtB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,OAAO,CAAC,uBAAuB,KAAK,oCAAqB,CAAC,UAAU,EAAE;gBACxE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;gBAE9D,IAAI,MAAM,KAAK,IAAI,EAAE;oBACnB,MAAM,OAAO,GAAG,wBAAc,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAE9E,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBAC5B;aACF;YAED,MAAM,OAAO,GAAG,wBAAc,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE9E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAgB;QAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEvF,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,WAAW,EACX,QAAQ,EACR,YAAY,CACb,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EAEjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,UAAU,EAC1B,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,OAAO,GAAG,WAAW,CAAC;YAE5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAgB;QAC9C,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,iCAAiC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE5G,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,CACd,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,SAAS,EACzB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,cAAc,GAAG,wBAAc,CAAC,wBAAwB,EAAE,CAAC;YAEjE,IAAI,cAAc,KAAK,SAAS,EAAE;gBAChC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;aACjC;SACF;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAgB;QAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAErF,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,WAAW,EACX,WAAW,EACX,MAAM,CACP,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,SAAS,EACzB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7D,MAAM,OAAO,GAAG,wBAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEzE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAgB;QACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElF,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,CAAC,6BAA6B,CACtF,OAAO,EACP,WAAW,EACX,MAAM,CACP,CAAC;QAEF,IAAI,mBAAmB,KAAK,SAAS,EAAE;YACrC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,mBAAmB,EACnB,yCAAsB,CAAC,MAAM,EAC7B,mBAAmB,EACnB,kCAAe,CAAC,oBAAoB,EACpC,uBAAa,CAAC,QAAQ,EACtB,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAC;QAE/B,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAgB,EAAE,QAAyB;QAChE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;aACnF;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,IAAa,EAAE,MAAgB;QAC1E,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,MAAM,EAAE;YACV,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC5D;aAAM;YACL,IAAI,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,kCAAe,CAAC,QAAQ,CAAC,CAAC;YAEnF,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEtE,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,MAAM,CAAC;SACf;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAW,CACZ,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,QAAQ,EACxB,uBAAa,CAAC,QAAQ,EACtB,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sCAAsC,CACjD,OAAgB;QAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,kCAAe,CAAC,sBAAsB,CAAC,CAAC;QAE7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAE/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAEtC,IAAI,QAAQ,EAAE;gBACZ,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;iBACxC;gBAED,OAAO,MAAM,0CAAgC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aACtE;SACF;QAED,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvE,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,IAAI,EACJ,mBAAmB,EACnB,MAAM,CACP,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,sBAAsB,EACtC,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,MAAM,0CAAgC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,IAAW;QACxC,MAAM,OAAO,GAAG,2EAA2E,CAAC;QAE5F,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAgB,EAAE,OAAe,EAAE,WAAyB;QACtF,IAAI,WAAW,CAAC,IAAI,KAAK,8BAAe,CAAC,UAAU,EAAE;YACnD,MAAM,0BAAgB,CAAC,wBAAwB,CAC7C,OAAO,EACP,WAAW,EACX,OAAO,EACP,uCAAoB,CAAC,MAAM,EAC3B,KAAK,EAAE,OAAe,EAAE,EAAE;gBACxB,aAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,CACF,CAAC;SACH;aAAM,IAAI,WAAW,CAAC,IAAI,KAAK,8BAAe,CAAC,QAAQ,EAAE;YACxD,MAAM,0BAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC9E;aAAM,IAAI,WAAW,CAAC,IAAI,KAAK,8BAAe,CAAC,SAAS,EAAE;YACzD,MAAM,0BAAgB,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC/E;aAAM,IAAI,WAAW,CAAC,IAAI,IAAI,8BAAe,CAAC,gBAAgB,IAAI,WAAW,CAAC,UAAU,EAAE;YACzF,MAAM,wBAAwB,CAAC,aAAa,CAAC,OAAO,EAAE;gBACpD,QAAQ,EAAE,WAAW,CAAC,UAAU;gBAChC,mBAAmB,EAAE,WAAW,CAAC,EAAE;gBACnC,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;SACJ;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,OAAgB;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,kCAAe,CAAC,YAAY,CAAC,CAAC;QAEnE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAE/B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACxB,OAAO,MAAM,gCAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;aACxE;SACF;QAED,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvE,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,CACP,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,YAAY,EAC5B,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEzB,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,MAAM,gCAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,CACrC,OAAgB,EAChB,QAA0B;QAE1B,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,kBAAkB,GAAG,8BAAoB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzF,aAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,iCAAiC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEjG,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACrE;aAAM;YACL,IAAI,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE5E,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpF,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,GAAG,YAAY,CAAC;QAExB,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE;YAC1B,IAAI,GAAG,8BAAoB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvE,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,GAAG,4BAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAElH,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,QAAQ,CAAC,QAAQ,EACjB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,MAAM,kBAAQ,CAAC,WAAW,EAAE,CAAC;YAE7B,IAAI,kBAAQ,CAAC,aAAa,KAAK,IAAI,EAAE;gBACnC,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB;oBAClD,CAAC,CAAC,QAAQ,CAAC,mBAAmB;oBAC9B,CAAC,CAAC,8BAAoB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEpE,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC,uBAAuB,CACrE,eAAe,GAAG,eAAe,GAAG,OAAO,CAC5C,CAAC;gBAEF,IAAI,UAAU,EAAE;oBACd,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;oBAE/B,IAAI,UAAU,CAAC,OAAO,EAAE;wBACtB,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;qBACzC;iBACF;aACF;YAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,CACrC,OAAgB,EAChB,QAA0B;QAE1B,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,kBAAkB,GAAG,8BAAoB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzF,aAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,iCAAiC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEjG,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACrE;aAAM;YACL,IAAI,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE5E,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpF,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,GAAG,YAAY,CAAC;QAExB,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE;YAC1B,IAAI,GAAG,8BAAoB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvE,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,GAAG,4BAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAElH,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,QAAQ,CAAC,QAAQ,EACjB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,MAAM,kBAAQ,CAAC,WAAW,EAAE,CAAC;YAE7B,IAAI,kBAAQ,CAAC,aAAa,KAAK,IAAI,EAAE;gBACnC,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB;oBAClD,CAAC,CAAC,QAAQ,CAAC,mBAAmB;oBAC9B,CAAC,CAAC,8BAAoB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEpE,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC,uBAAuB,CACrE,eAAe,GAAG,eAAe,GAAG,OAAO,CAC5C,CAAC;gBAEF,IAAI,UAAU,EAAE;oBACd,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;oBAE/B,IAAI,UAAU,CAAC,OAAO,EAAE;wBACtB,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;qBACzC;iBACF;aACF;YAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAgB,EAAE,IAAa,EAAE,MAAgB;QAC3E,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,kBAAQ,CAAC,WAAW,EAAE,CAAC;QAE7B,IAAI,kBAAQ,CAAC,aAAa,KAAK,IAAI,EAAE;YACnC,aAAG,CAAC,sBAAsB,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,UAAU,GAAG,kBAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAElE,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE;YAC/C,aAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACrD,OAAO;SACR;QAED,IAAI,MAAM,EAAE;YACV,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC5D;aAAM;YACL,IAAI,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,kCAAe,CAAC,KAAK,CAAC,CAAC;YAEhF,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAEvE,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,OAAO,CAAC;SAChB;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEjH,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,KAAK,EACrB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAgB,EAAE,IAAa,EAAE,MAAgB;QAC/E,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,MAAM,EAAE;YACV,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC5D;aAAM;YACL,IAAI,GAAG,wBAAwB,CAAC,eAAe,CAAC,OAAO,EAAE,kCAAe,CAAC,QAAQ,CAAC,CAAC;YAEnF,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,IAAI,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEtE,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,OAAO;iBACR;aACF;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,MAAM,CAAC;SACf;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAClF,OAAO,EACP,IAAI,GAAG,QAAQ,EACf,WAAW,EACX,MAAM,CACP,CAAC;QAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,OAAO;SACR;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CACxC,iBAAiB,EACjB,yCAAsB,CAAC,UAAU,EACjC,0BAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAC/C,kCAAe,CAAC,SAAS,EACzB,uBAAa,CAAC,YAAY,EAC1B,SAAS,EACT,0CAAuB,CAAC,MAAM,CAC/B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAE1C,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,0BAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7D,MAAM,OAAO,GAAG,wBAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEzE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;QAED,MAAM,+BAAqB,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF;AA1iCD,2CA0iCC","file":"../../app/ProjectItemCreateManager.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport Project, { FolderContext } from \"./Project\";\r\nimport ProjectContent from \"./ProjectContent\";\r\nimport { ProjectScriptLanguage } from \"./IProjectData\";\r\nimport { ProjectItemCreationType, ProjectItemStorageType, ProjectItemType } from \"./IProjectItemData\";\r\nimport StorageUtilities from \"./../storage/StorageUtilities\";\r\nimport ZipStorage from \"../storage/ZipStorage\";\r\nimport IProjectItemSeed from \"./IProjectItemSeed\";\r\nimport ProjectItemUtilities from \"./ProjectItemUtilities\";\r\nimport IFolder from \"../storage/IFolder\";\r\nimport ProjectAutogeneration from \"./ProjectAutogeneration\";\r\nimport ProjectItem from \"./ProjectItem\";\r\nimport Database from \"../minecraft/Database\";\r\nimport Log from \"../core/Log\";\r\nimport SoundDefinitionCatalogDefinition from \"../minecraft/SoundDefinitionCatalogDefinition\";\r\nimport SoundCatalogDefinition from \"../minecraft/SoundCatalogDefinition\";\r\nimport IFile from \"../storage/IFile\";\r\nimport MinecraftUtilities from \"../minecraft/MinecraftUtilities\";\r\nimport IGalleryItem, { GalleryItemType } from \"./IGalleryItem\";\r\nimport ProjectUtilities, { NewEntityTypeAddMode } from \"./ProjectUtilities\";\r\n\r\n/// Does create operations for project items.\r\n\r\nexport default class ProjectItemCreateManager {\r\n private static async _getDefaultBehaviorPackPath(project: Project) {\r\n const bpFolder = await project.ensureDefaultBehaviorPackFolder();\r\n\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n const defaultPath = bpFolder.getFolderRelativePath(project.projectFolder);\r\n\r\n return defaultPath;\r\n }\r\n\r\n private static async _getDefaultBehaviorPackFolderPath(project: Project, name: string) {\r\n const bpFolder = await project.ensureDefaultBehaviorPackFolder();\r\n\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n const subfolder = bpFolder.ensureFolder(name);\r\n await subfolder.ensureExists();\r\n\r\n const defaultPath = subfolder.getFolderRelativePath(project.projectFolder);\r\n\r\n return defaultPath;\r\n }\r\n\r\n private static async _getDefaultResourcePackPath(project: Project) {\r\n const rpFolder = await project.ensureDefaultResourcePackFolder();\r\n\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n const defaultPath = rpFolder.getFolderRelativePath(project.projectFolder);\r\n\r\n return defaultPath;\r\n }\r\n\r\n private static async _getDefaultResourcePackFolderPath(project: Project, name: string) {\r\n const rpFolder = await project.ensureDefaultResourcePackFolder();\r\n\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n const subfolder = rpFolder.ensureFolder(name);\r\n await subfolder.ensureExists();\r\n\r\n const defaultPath = subfolder.getFolderRelativePath(project.projectFolder);\r\n\r\n return defaultPath;\r\n }\r\n\r\n private static async _getDefaultScriptsFolderPath(project: Project) {\r\n const scriptsFolder = await project.ensureMainScriptsFolder();\r\n\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n const defaultPath = scriptsFolder.getFolderRelativePath(project.projectFolder);\r\n\r\n return defaultPath;\r\n }\r\n\r\n static async createNewItem(project: Project, itemSeed: IProjectItemSeed): Promise<ProjectItem | undefined> {\r\n if (itemSeed.name === \"\" || itemSeed.name === undefined) {\r\n itemSeed.name = ProjectItemUtilities.getNewItemName(itemSeed.itemType);\r\n }\r\n\r\n if (itemSeed.itemType) {\r\n switch (itemSeed.itemType) {\r\n case ProjectItemType.js:\r\n case ProjectItemType.ts:\r\n return ProjectItemCreateManager.createNewScript(project, itemSeed.itemType, itemSeed.name, itemSeed.folder);\r\n\r\n case ProjectItemType.dataForm:\r\n return ProjectItemCreateManager.createNewForm(project, itemSeed.name, itemSeed.folder);\r\n\r\n case ProjectItemType.audio:\r\n return ProjectItemCreateManager.createNewAudio(project, itemSeed.name, itemSeed.folder);\r\n }\r\n }\r\n\r\n if (ProjectItemUtilities.isBehaviorRelated(itemSeed.itemType)) {\r\n return ProjectItemCreateManager.createBehaviorPackJsonItem(project, itemSeed);\r\n } else if (ProjectItemUtilities.isResourceRelated(itemSeed.itemType)) {\r\n return ProjectItemCreateManager.createResourcePackJsonItem(project, itemSeed);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static async createNewScript(project: Project, itemType: ProjectItemType, name: string, folder: IFolder | undefined) {\r\n let defaultPath = undefined;\r\n\r\n if (folder && project.projectFolder) {\r\n defaultPath = folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n defaultPath = await ProjectItemCreateManager._getDefaultScriptsFolderPath(project);\r\n }\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n defaultPath,\r\n name,\r\n itemType === ProjectItemType.js ? \"js\" : \"ts\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n itemType === ProjectItemType.js ? ProjectItemType.js : ProjectItemType.ts,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const baseName = StorageUtilities.getBaseFromName(file.name);\r\n\r\n if (project.preferredScriptLanguage === ProjectScriptLanguage.typeScript) {\r\n file.setContent(ProjectContent.getEmptyTypeScript(project.name, baseName));\r\n } else {\r\n file.setContent(ProjectContent.getEmptyJavaScript(project.name, baseName));\r\n }\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n await project.save();\r\n\r\n return pi;\r\n }\r\n\r\n static async _generateFolderNameForNewItem(project: Project, basePath: string, baseName: string) {\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n let index = 0;\r\n\r\n let candidateFolderPath = \"\";\r\n let finalPathPrefix = \"\";\r\n const projectFolder = project.projectFolder;\r\n let candidateFolder = null;\r\n\r\n let hash = basePath.indexOf(\"#\");\r\n let targetFolder = projectFolder;\r\n\r\n while (hash > 0) {\r\n // dig into container files if needed.\r\n let containerFilePath = basePath.substring(0, hash);\r\n basePath = basePath.substring(hash + 1);\r\n hash = basePath.indexOf(\"#\");\r\n\r\n if (containerFilePath.startsWith(targetFolder.fullPath)) {\r\n containerFilePath = containerFilePath.substring(targetFolder.fullPath.length);\r\n }\r\n\r\n finalPathPrefix += containerFilePath + \"#\";\r\n\r\n const containerFile = await targetFolder.getFileFromRelativePath(containerFilePath);\r\n\r\n if (!containerFile) {\r\n return undefined;\r\n }\r\n\r\n const extension = containerFile.type;\r\n\r\n if (extension !== \"zip\" && extension !== \"mcworld\" && extension !== \"mctemplate\") {\r\n return undefined;\r\n }\r\n\r\n if (!containerFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n await containerFile.loadContent();\r\n\r\n if (!containerFile.content || !(containerFile.content instanceof Uint8Array)) {\r\n return undefined;\r\n }\r\n\r\n await zipStorage.loadFromUint8Array(containerFile.content, containerFile.name);\r\n containerFile.fileContainerStorage = zipStorage;\r\n containerFile.fileContainerStorage.storagePath = containerFilePath + \"#\";\r\n }\r\n\r\n targetFolder = containerFile.fileContainerStorage.rootFolder;\r\n }\r\n\r\n await targetFolder.ensureFolderFromRelativePath(basePath);\r\n await targetFolder.ensureExists();\r\n\r\n // find a folder name not in use\r\n do {\r\n index++;\r\n candidateFolderPath = basePath + baseName + index;\r\n candidateFolder = await targetFolder.getFolderFromRelativePath(candidateFolderPath);\r\n } while (candidateFolder !== null && candidateFolder !== undefined);\r\n\r\n return finalPathPrefix + candidateFolderPath;\r\n }\r\n\r\n static async _generateFileNameForNewItem(project: Project, basePath: string, baseName: string, extension: string) {\r\n if (project.projectFolder === null) {\r\n return undefined;\r\n }\r\n\r\n let index = 0;\r\n\r\n let candidateFilePath = \"\";\r\n let finalPathPrefix = \"\";\r\n const projectFolder = project.projectFolder;\r\n let candidateFile = null;\r\n\r\n let hash = basePath.indexOf(\"#\");\r\n let targetFolder = projectFolder;\r\n\r\n while (hash > 0) {\r\n // dig into container files if needed.\r\n let containerFilePath = basePath.substring(0, hash);\r\n basePath = basePath.substring(hash + 1);\r\n hash = basePath.indexOf(\"#\");\r\n\r\n if (containerFilePath.startsWith(targetFolder.fullPath)) {\r\n containerFilePath = containerFilePath.substring(targetFolder.fullPath.length);\r\n }\r\n\r\n finalPathPrefix += containerFilePath + \"#\";\r\n\r\n const containerFile = await targetFolder.getFileFromRelativePath(containerFilePath);\r\n\r\n if (!containerFile) {\r\n return undefined;\r\n }\r\n\r\n const extension = containerFile.type;\r\n\r\n if (extension !== \"zip\" && extension !== \"mcworld\" && extension !== \"mctemplate\") {\r\n return undefined;\r\n }\r\n\r\n if (!containerFile.fileContainerStorage) {\r\n const zipStorage = new ZipStorage();\r\n\r\n await containerFile.loadContent();\r\n\r\n if (!containerFile.content || !(containerFile.content instanceof Uint8Array)) {\r\n return undefined;\r\n }\r\n\r\n await zipStorage.loadFromUint8Array(containerFile.content);\r\n containerFile.fileContainerStorage = zipStorage;\r\n containerFile.fileContainerStorage.storagePath = containerFilePath + \"#\";\r\n }\r\n\r\n targetFolder = containerFile.fileContainerStorage.rootFolder;\r\n }\r\n\r\n await targetFolder.ensureFolderFromRelativePath(basePath);\r\n await targetFolder.ensureExists();\r\n\r\n candidateFilePath = basePath + baseName + \".\" + extension;\r\n candidateFile = await targetFolder.getFileFromRelativePath(candidateFilePath);\r\n\r\n if (candidateFile) {\r\n // find a filename not in use\r\n do {\r\n index++;\r\n candidateFilePath = basePath + baseName + index + \".\" + extension;\r\n candidateFile = await targetFolder.getFileFromRelativePath(candidateFilePath);\r\n } while (candidateFile !== null && candidateFile !== undefined);\r\n }\r\n\r\n return finalPathPrefix + candidateFilePath;\r\n }\r\n\r\n static async createNewGameTestScript(project: Project) {\r\n const defaultPath = await ProjectItemCreateManager._getDefaultBehaviorPackFolderPath(project, \"scripts\");\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n defaultPath,\r\n \"test\",\r\n \"js\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.testJs,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const baseName = StorageUtilities.getBaseFromName(file.name);\r\n\r\n if (project.preferredScriptLanguage === ProjectScriptLanguage.typeScript) {\r\n const tsFile = file.parentFolder.ensureFile(baseName + \".ts\");\r\n\r\n if (tsFile !== null) {\r\n const content = ProjectContent.getEmptyTestTypeScript(project.name, baseName);\r\n\r\n tsFile.setContent(content);\r\n }\r\n }\r\n\r\n const content = ProjectContent.getEmptyTestJavaScript(project.name, baseName);\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await project.save();\r\n }\r\n\r\n static async createNewFunction(project: Project) {\r\n const defaultPath = await this._getDefaultBehaviorPackFolderPath(project, \"functions\");\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n defaultPath,\r\n \"action\",\r\n \"mcfunction\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.MCFunction,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const content = \"say hello\";\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await project.save();\r\n }\r\n\r\n static async createNewStructure(project: Project) {\r\n const defaultPath = await ProjectItemCreateManager._getDefaultBehaviorPackFolderPath(project, \"structures\");\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n defaultPath,\r\n \"structure\",\r\n \"mcstructure\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.structure,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const structureBytes = ProjectContent.generateDefaultStructure();\r\n\r\n if (structureBytes !== undefined) {\r\n file.setContent(structureBytes);\r\n }\r\n }\r\n\r\n await project.save();\r\n }\r\n\r\n static async createNewActionSet(project: Project) {\r\n const defaultPath = await this._getDefaultBehaviorPackFolderPath(project, \"actions\");\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n defaultPath,\r\n \"actionset\",\r\n \"json\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.actionSet,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const baseName = StorageUtilities.getBaseFromName(file.name);\r\n\r\n const content = ProjectContent.getEmptyActionSet(project.name, baseName);\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n }\r\n\r\n static async createNewDocumentedType(project: Project) {\r\n const defaultPath = await this._getDefaultBehaviorPackFolderPath(project, \"docs\");\r\n\r\n if (defaultPath === undefined) {\r\n return;\r\n }\r\n\r\n const candidateFolderPath = await ProjectItemCreateManager._generateFolderNameForNewItem(\r\n project,\r\n defaultPath,\r\n \"type\"\r\n );\r\n\r\n if (candidateFolderPath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFolderPath,\r\n ProjectItemStorageType.folder,\r\n candidateFolderPath,\r\n ProjectItemType.documentedTypeFolder,\r\n FolderContext.metaData,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n await pi.ensureFolderStorage();\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n }\r\n\r\n static getExistingPath(project: Project, itemType: ProjectItemType) {\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n for (const item of project.items) {\r\n if (item.itemType === itemType && item.primaryFile) {\r\n return item.primaryFile.parentFolder.getFolderRelativePath(project.projectFolder);\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static async createNewForm(project: Project, name?: string, folder?: IFolder) {\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n if (folder) {\r\n path = folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n path = ProjectItemCreateManager.getExistingPath(project, ProjectItemType.dataForm);\r\n\r\n if (path === undefined) {\r\n path = await this._getDefaultBehaviorPackFolderPath(project, \"forms\");\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n\r\n if (!path) {\r\n return undefined;\r\n }\r\n\r\n if (!name) {\r\n name = \"form\";\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n path,\r\n name,\r\n \"form.json\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.dataForm,\r\n FolderContext.metaData,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const content = \"{}\";\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return pi;\r\n }\r\n\r\n static async ensureSoundDefinitionCatalogDefinition(\r\n project: Project\r\n ): Promise<SoundDefinitionCatalogDefinition | undefined> {\r\n const items = project.getItemsByType(ProjectItemType.soundDefinitionCatalog);\r\n\r\n if (items.length > 0) {\r\n await items[0].ensureStorage();\r\n\r\n const itemFile = items[0].primaryFile;\r\n\r\n if (itemFile) {\r\n await itemFile.loadContent();\r\n\r\n if (!itemFile.content) {\r\n this.setFileToDefaultContent(itemFile);\r\n }\r\n\r\n return await SoundDefinitionCatalogDefinition.ensureOnFile(itemFile);\r\n }\r\n }\r\n\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n path = await this._getDefaultResourcePackFolderPath(project, \"sounds\");\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n path,\r\n \"sound_definitions\",\r\n \"json\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.soundDefinitionCatalog,\r\n FolderContext.resourcePack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file === null) {\r\n return undefined;\r\n }\r\n\r\n this.setFileToDefaultContent(file);\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return await SoundDefinitionCatalogDefinition.ensureOnFile(file);\r\n }\r\n\r\n static setFileToDefaultContent(file: IFile) {\r\n const content = '{\\r\\n \"format_version\" : \"1.20.20\",\\r\\n \"sound_definitions\" : {}\\r\\n}';\r\n\r\n file.setContent(content);\r\n file.saveContent();\r\n }\r\n\r\n static async addFromGallery(project: Project, newName: string, galleryItem: IGalleryItem) {\r\n if (galleryItem.type === GalleryItemType.entityType) {\r\n await ProjectUtilities.addEntityTypeFromGallery(\r\n project,\r\n galleryItem,\r\n newName,\r\n NewEntityTypeAddMode.baseId,\r\n async (message: string) => {\r\n Log.message(message);\r\n }\r\n );\r\n } else if (galleryItem.type === GalleryItemType.itemType) {\r\n await ProjectUtilities.addItemTypeFromGallery(project, galleryItem, newName);\r\n } else if (galleryItem.type === GalleryItemType.blockType) {\r\n await ProjectUtilities.addBlockTypeFromGallery(project, galleryItem, newName);\r\n } else if (galleryItem.type >= GalleryItemType.spawnLootRecipes && galleryItem.targetType) {\r\n await ProjectItemCreateManager.createNewItem(project, {\r\n itemType: galleryItem.targetType,\r\n contentTemplateName: galleryItem.id,\r\n name: newName,\r\n folder: undefined,\r\n });\r\n }\r\n }\r\n\r\n static async ensureSoundCatalogDefinition(project: Project): Promise<SoundCatalogDefinition | undefined> {\r\n const items = project.getItemsByType(ProjectItemType.soundCatalog);\r\n\r\n if (items.length > 0) {\r\n await items[0].ensureStorage();\r\n\r\n if (items[0].primaryFile) {\r\n return await SoundCatalogDefinition.ensureOnFile(items[0].primaryFile);\r\n }\r\n }\r\n\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n path = await this._getDefaultResourcePackFolderPath(project, \"sounds\");\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n path,\r\n \"sounds\",\r\n \"json\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.soundCatalog,\r\n FolderContext.resourcePack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file === null) {\r\n return undefined;\r\n }\r\n\r\n const content = \"{\\r\\n}\";\r\n\r\n file.setContent(content);\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return await SoundCatalogDefinition.ensureOnFile(file);\r\n }\r\n\r\n static async createBehaviorPackJsonItem(\r\n project: Project,\r\n itemSeed: IProjectItemSeed\r\n ): Promise<ProjectItem | undefined> {\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n const folderRootsForType = ProjectItemUtilities.getFolderRootsForType(itemSeed.itemType);\r\n\r\n Log.assert(folderRootsForType.length > 0, \"No folder roots for item type: \" + itemSeed.itemType);\r\n\r\n if (itemSeed.folder) {\r\n path = itemSeed.folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n path = ProjectItemCreateManager.getExistingPath(project, itemSeed.itemType);\r\n\r\n if (path === undefined) {\r\n path = await this._getDefaultBehaviorPackFolderPath(project, folderRootsForType[0]);\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n\r\n if (!path) {\r\n return undefined;\r\n }\r\n\r\n let namespacedId = itemSeed.name;\r\n let name = namespacedId;\r\n\r\n if (!namespacedId || !name) {\r\n name = ProjectItemUtilities.getNewItemTechnicalName(itemSeed.itemType);\r\n namespacedId = name;\r\n }\r\n\r\n name = MinecraftUtilities.getNamespacedIdName(name);\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(project, path, name, \"json\");\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n itemSeed.itemType,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n let content = \"{}\";\r\n\r\n await Database.loadContent();\r\n\r\n if (Database.contentFolder !== null) {\r\n const contentTemplate = itemSeed.contentTemplateName\r\n ? itemSeed.contentTemplateName\r\n : ProjectItemUtilities.getNewItemTechnicalName(itemSeed.itemType);\r\n\r\n const sourceFile = await Database.contentFolder.getFileFromRelativePath(\r\n \"/newitemjson/\" + contentTemplate + \".json\"\r\n );\r\n\r\n if (sourceFile) {\r\n await sourceFile.loadContent();\r\n\r\n if (sourceFile.content) {\r\n content = sourceFile.content.toString();\r\n }\r\n }\r\n }\r\n\r\n content = content.replace(/examplens:examplename/g, namespacedId);\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return pi;\r\n }\r\n\r\n static async createResourcePackJsonItem(\r\n project: Project,\r\n itemSeed: IProjectItemSeed\r\n ): Promise<ProjectItem | undefined> {\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n\r\n const folderRootsForType = ProjectItemUtilities.getFolderRootsForType(itemSeed.itemType);\r\n\r\n Log.assert(folderRootsForType.length > 0, \"No folder roots for item type: \" + itemSeed.itemType);\r\n\r\n if (itemSeed.folder) {\r\n path = itemSeed.folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n path = ProjectItemCreateManager.getExistingPath(project, itemSeed.itemType);\r\n\r\n if (path === undefined) {\r\n path = await this._getDefaultResourcePackFolderPath(project, folderRootsForType[0]);\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n\r\n if (!path) {\r\n return undefined;\r\n }\r\n\r\n let namespacedId = itemSeed.name;\r\n let name = namespacedId;\r\n\r\n if (!namespacedId || !name) {\r\n name = ProjectItemUtilities.getNewItemTechnicalName(itemSeed.itemType);\r\n namespacedId = name;\r\n }\r\n\r\n name = MinecraftUtilities.getNamespacedIdName(name);\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(project, path, name, \"json\");\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n itemSeed.itemType,\r\n FolderContext.resourcePack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n let content = \"{}\";\r\n\r\n await Database.loadContent();\r\n\r\n if (Database.contentFolder !== null) {\r\n const contentTemplate = itemSeed.contentTemplateName\r\n ? itemSeed.contentTemplateName\r\n : ProjectItemUtilities.getNewItemTechnicalName(itemSeed.itemType);\r\n\r\n const sourceFile = await Database.contentFolder.getFileFromRelativePath(\r\n \"/newitemjson/\" + contentTemplate + \".json\"\r\n );\r\n\r\n if (sourceFile) {\r\n await sourceFile.loadContent();\r\n\r\n if (sourceFile.content) {\r\n content = sourceFile.content.toString();\r\n }\r\n }\r\n }\r\n\r\n content = content.replace(/examplens:examplename/g, namespacedId);\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return pi;\r\n }\r\n\r\n static async createNewAudio(project: Project, name?: string, folder?: IFolder): Promise<ProjectItem | undefined> {\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return undefined;\r\n }\r\n await Database.loadContent();\r\n\r\n if (Database.contentFolder === null) {\r\n Log.unexpectedContentState();\r\n return undefined;\r\n }\r\n\r\n const sourceFile = Database.contentFolder.ensureFile(\"blank.ogg\");\r\n\r\n await sourceFile.loadContent();\r\n\r\n if (!(sourceFile.content instanceof Uint8Array)) {\r\n Log.error(\"Could not find source OGG file content.\");\r\n return;\r\n }\r\n\r\n if (folder) {\r\n path = folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n path = ProjectItemCreateManager.getExistingPath(project, ProjectItemType.audio);\r\n\r\n if (path === undefined) {\r\n path = await this._getDefaultResourcePackFolderPath(project, \"sounds\");\r\n\r\n if (path === undefined) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n\r\n if (!path) {\r\n return undefined;\r\n }\r\n\r\n if (!name) {\r\n name = \"sound\";\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(project, path, name, \"ogg\");\r\n\r\n if (candidateFilePath === undefined) {\r\n return undefined;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.audio,\r\n FolderContext.resourcePack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n file.setContent(sourceFile.content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n\r\n return pi;\r\n }\r\n\r\n static async createNewWorldTest(project: Project, name?: string, folder?: IFolder) {\r\n let path: string | undefined = undefined;\r\n\r\n if (!project.projectFolder) {\r\n return;\r\n }\r\n\r\n if (folder) {\r\n path = folder.getFolderRelativePath(project.projectFolder);\r\n } else {\r\n path = ProjectItemCreateManager.getExistingPath(project, ProjectItemType.dataForm);\r\n\r\n if (path === undefined) {\r\n path = await this._getDefaultBehaviorPackFolderPath(project, \"forms\");\r\n\r\n if (path === undefined) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (!path) {\r\n return;\r\n }\r\n\r\n if (!name) {\r\n name = \"form\";\r\n }\r\n\r\n const candidateFilePath = await ProjectItemCreateManager._generateFileNameForNewItem(\r\n project,\r\n path + \"tests/\",\r\n \"worldtest\",\r\n \"json\"\r\n );\r\n\r\n if (candidateFilePath === undefined) {\r\n return;\r\n }\r\n\r\n const pi = project.ensureItemByProjectPath(\r\n candidateFilePath,\r\n ProjectItemStorageType.singleFile,\r\n StorageUtilities.getLeafName(candidateFilePath),\r\n ProjectItemType.worldTest,\r\n FolderContext.behaviorPack,\r\n undefined,\r\n ProjectItemCreationType.normal\r\n );\r\n\r\n const file = await pi.ensureFileStorage();\r\n\r\n if (file !== null) {\r\n const baseName = StorageUtilities.getBaseFromName(file.name);\r\n\r\n const content = ProjectContent.getEmptyWorldTest(project.name, baseName);\r\n\r\n file.setContent(content);\r\n }\r\n\r\n await ProjectAutogeneration.updateProjectAutogeneration(project);\r\n\r\n await project.save();\r\n }\r\n}\r\n"]}
|